Hej Jacob, Michael og andre der er interesseret i dette emne.
Øvrige bør nok checke ud nu, for nu bliver det en anelse langhåret for
non-IT udviklere:
Garmin.dll kobler gpslink sammen med gps'en via com portens driver. Der skal
ikke linkes til dlsk's datastruktur og/eller data api, da gpslink tager sig
af dette. kommunikationsrækken er:
DLSK <-> GPSlink <-> Garmin.dll <-> Comx driver <-> Com port <-> GPS
Dvs at dll'en skal kunne tage et input ind i en datastruktur, omformatere
det til en ny struktur og sende det ud på den anden driver. Dette skal den
kunne gør 2 veje for de 3 data typer (waypoints, router og tracklogs). For
hver af de 6 muligheder skal dll'en kunne håndtere at der er et eller flere
dataset (fx i programmeringen have en "until no more waypoint, do ...") der
skal overføres. Dll'en skal have et vindue til "indstillinger" der kun
gemmer en værdi nemlig den valgte COM port.
Vi har en "programming guide" til hvorledes man skriver dll'er der linker
til GPSlink (GPST.exe) og de definitioner og lib's man skal bruge. Der er en
tom programmeringsskabelon som i et word dok fylder ca 4 sider. Den bliver
selvfølgelig noget længere når der fyldes kode i og der tilføjes det der
skal til for at kommunikere med GPS'en vis COM porten.
Eksemplerne er lavet i MS Visual C og den seneste kompilering af garmin.dll
er kompileret i version 7.1. Jeg kan ikke se hvorfor man ikke skulle kunne
lave det i andre udviklingsværktøjer og andre versioner, men det er min C
viden ikke stor nok til at vurdere seriøst.
Yderligere har vi nu (det var faktisk en hemmelighed da den oprindelige
driver blev lavet) en beskrivelse af Garmins kommunikations protokol.
Det som der er galt med den nuværende driver er at når den initierer
kommunikationen med gps'en, så sender den en "get me waypoints" hvorefter
gps'en svarer med først at sende en "hvem er jeg" informationspakke med
modelnavn, sw version osv og så kommer waypoints i en lind strøm. Dll'en
sorterer blindt den første pakke fra og behandler resten som waypoints. For
ca 2 år siden ændrede garmin bare deres protokol således at de nyere gps'er
nu først sender den gamle informationspakke og herefter en ny større
informationspakke med flere informationer og til sidste alle waypoints. Da
den nuværende driver ikke tester ordentligt på det den modtager tror den at
den nye informationspakke er waypoints og får så alting galt i halsen fordi
den øjensynligt heller ikke har en bare nogenlunde ok errorhandling.
Resultatet er at den aborter med en runtime error. Der skal programmes en
proces der smager på det modtagne og sorterer informationspakkerne væk,
validerer at det er waypoints der modtages og sender disse videre til
gpst.exe. Hvis noget går galt bør der være en minimalistik errorhandler, men
det kender I jo selv til.
Som sagt tidligere (??) så har jeg selv en baggrund i telekommunikation og
kan snildt læse og forklare garmin's protokol. Den gang jeg lavede sådan
noget lavede jeg det bare i assambler eller pascal og låste blot alle porte
i maskinen, som jeg skulle bruge. Det går jo bare ikke rigtigt i nutidens
windows miljø så derfor har jeg simpelthen ikke evner til at lave PC
programmeringsdelen. Men hvis der er en sej VC koder "out there" som vil
påtage sig denne del, så kan jeg godt forklare Garmin delen hen ad vejen.
Jeg vil tro det kræver at man har en gps'er hjemme på pc'en når man skal til
at teste, men det er vel til at finde ud af, hvis jeres egen ikke kan skrues
af.
Jeg har (skal lige finde det frem) noget software der i baggrunden kan
analysere og dokumentere hvad der sker på com porten. Og jeg har evnerne til
at fortolke loggen og fortælle hvad der evt er galt med koden.
Og så mer jeg sikker på der er masser her i gruppen der gerne vil betateste.
Jeg kan godt stå for denne process, hvis det ønskes.
Håber det er tilstrækkeligt, selvom jeg ikke har C erfaring nok til at give
et skud på hvor længe det kommer til at tage.
Bjarke
"Michael Thomsen" <sorry@no.spam> wrote in message
news
.t2uvyexdhrxo93@mtpc...
> On Tue, 04 Dec 2007 19:38:07 +0100, Bjarke M. Christensen <Bjarke
> grevestrand <"dk>"> wrote:
>
>> Jeg har sourcekoden til text.dll driveren, interface beskrivelser til
>> både DLSK og Garmin protokollen samt et ret godt indblik i hvad der er
>> grunden til at den nuværende garmin.dll ikke virker med de nye Garmin
>> GPS'er.
>
> Hvilken compiler er brugt til det gamle? Microsoft, gnu oder?
> Du må da gerne uddybe lidt af hvad der er galt og hvad der skal laves,
> så man har en ide om hvor meget tid der skal lægges i det.
>
> //michael
>
> --
> Instead of email, use this:
http://mtech.dk/thomsen/contact.php