» »

(C++) serijsko pošiljanje 'short' podatkov

(C++) serijsko pošiljanje 'short' podatkov

dife ::

Preko serijskega porta želim pošiljati 3 mestna števila od 0 do 999. Zaenkrat to izvajam tako, da vsako števko predstavim kot string, tako da za 3 mestno število, pošljem 3 byte. Ker bi želel, da bi prenos bil hitrejši, sem pomislil, da bi število poslal v binarni obliki (npr.: število 266 bi poslal kot 00000001 111111111 ), za kar bi potreboval le 2 byte-a, a mi to ne uspe.

Delovanje preizkušam s programom, ki pošilja podatke o koordinatah miške na konzolnem oknu in sicer na arduino board, na katerem ob prenosu podatkov utripa lučka.
Na Arduino forumu so mi svetovali naj uporabim if(!WriteFile(hSerial, (void*)x, sizeof(x), &dwBytesRead, NULL)){}, pri čemer naj bo tip spremenljivke primerne velikosti (predpostavljam, da bi za 2 byte-a bil primeren 'short'), a žal lučka ne utripa. Spodaj je del kode:
HANDLE hSerial;
hSerial = CreateFile("COM7", GENERIC_WRITE | GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if(hSerial==INVALID_HANDLE_VALUE){
if(GetLastError()==ERROR_FILE_NOT_FOUND){}}
DCB dcbSerialParams = {0};
if (!GetCommState(hSerial, &dcbSerialParams))

dcbSerialParams.BaudRate=CBR_9600;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialParams.Parity=NOPARITY;
if(!SetCommState(hSerial, &dcbSerialParams)){}

short x = InRec.Event.MouseEvent.dwMousePosition.X
if(!WriteFile(hSerial, (void*)x, sizeof(x), NULL, NULL)){}

Morda kdo ve zakaj podatki niso poslani?

mallard ::

Najbrž ne bo rešilo tvoje težave - pri klicu na WriteFile castaš short v void*:

if (!WriteFile(hSerial, (void*) &x, sizeof(x), NULL, NULL)) {}
//                              ^ rabiš naslov

dife ::

Hvala, dela.

Senitel ::

if (!GetCommState(hSerial, &dcbSerialParams))
 
dcbSerialParams.BaudRate=CBR_9600;

Tole tudi ni najbolj cool thing in the world.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[baze] Povezava do slike ali BLOB?

Oddelek: Programiranje
101658 (1455) BlueRunner
»

[C] MySQL

Oddelek: Programiranje
292812 (1834) Tutankhamun
»

[Winsock & C++]HTTP - Prenašanje binarne datoteke - recv()

Oddelek: Programiranje
71233 (1152) W3by
»

C++

Oddelek: Programiranje
71416 (1178) zdravcc
»

C++ in komunikacija preko LPT pod NT/W2k

Oddelek: Programiranje
101138 (951) Turbina

Več podobnih tem