Avatar billede Yuhn Nybegynder
05. oktober 2010 - 11:31 Der er 3 kommentarer

Sende commando til serial port

Hejsa,

Jeg har en serial enhed som jeg prøver at kommunikere med.
Jeg har i serial protocol manualen som følger med enheden, fundet den første kommando jeg skal sende til enheden, for at afteste forbindelsen. Dvs. enheden skal gerne svare tilbage herpå.

Jeg er dog usikker på om jeg sender kommandoen rigtig.
Manualen er her:
http://www.sparkfun.com/datasheets/Sensors/Biometric/EN-FIM-ComProtocol-v1.75.pdf
Kommandown jeg prøver at sende til enheden er på side 79 punkt: 1

Så vidt jeg har forstået så er det byte værdierne som skal sende til enheden.
Her er det kode jeg tror er mest korrekt, som jeg har prøvet, hvilken enheden ikke vil svare tilbage på.

byte[] newMsg = new byte[7];

newMsg[0] = HexToByte("7E")[0];
newMsg[1] = 0x00000001;
newMsg[2] = 0x00000000;
newMsg[3] = 0x00000000;
newMsg[4] = 0x00000000;
newMsg[5] = 0x00000000;
newMsg[6] = 0x00000001;

comPort.Write(newMsg, 0, 7);


Hvis der er nogen som har et forslag til hvordan kommandoen skal sendes, vil jeg blive en vældig glad mand :)

Hilsen Nikolaj
Avatar billede Syska Mester
05. oktober 2010 - 11:53 #1
Virker som om du har alt for lidt bytes ... 00 00 00 00 er jo 4 bytes.

Som jeg læser det skal du sende 1x1byte(0x7E) + 6x4 bytes. ( som er dine instruktioner til enheden )

mvh
Avatar billede Yuhn Nybegynder
05. oktober 2010 - 12:59 #2
Tak for det Buzzzz,
Det har du nok ret i :)

Dog sker der heller ikke noget når jeg sender:

byte[] newMsg = new byte[25];

newMsg[0] = 0x0000007E;
newMsg[1] = 0x00000000;
newMsg[2] = 0x00000000;
newMsg[3] = 0x00000000;
newMsg[4] = 0x00000001;
newMsg[5] = 0x00000000;
newMsg[6] = 0x00000000;
newMsg[7] = 0x00000000;
newMsg[8] = 0x00000000;
newMsg[9] = 0x00000000;
newMsg[10] = 0x00000000;
newMsg[11] = 0x00000000;
newMsg[12] = 0x00000000;
newMsg[13] = 0x00000000;
newMsg[14] = 0x00000000;
newMsg[15] = 0x00000000;
newMsg[16] = 0x00000000;
newMsg[17] = 0x00000000;
newMsg[18] = 0x00000000;
newMsg[19] = 0x00000000;
newMsg[20] = 0x00000000;
newMsg[21] = 0x00000000;
newMsg[22] = 0x00000000;
newMsg[23] = 0x00000000;
newMsg[24] = 0x00000001;

comPort.Write(newMsg, 0, newMsg.Length);


Men måske jeg har samlet kablingen forkert eller noget.
Avatar billede Syska Mester
05. oktober 2010 - 14:34 #3
0x000000 er 4 bytes.

Du skal nok skrive:
0x00 ... som er en byte når du gør det på den måde.

byte[] bytes = new bytes[25];
bytes[0] = 0x7E;
bytes[4] = 0x01;

De er default 0, så ingen grund til at sætte dem.

Eventuelt prøv at bruge:
comPort.WriteLine()

Den smider en newline i enden, og måske det er hvad din enhed venter på.

mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester