Witam, mam spory problem i niewielkie doświadczenie w kwestii programowania komunikacji i chciałem prosić kogoś z większym doświadczeniem żeby rzucił okiem na kod. Muszę zrealizować komunikację z pewnym urządzeniem podłączanym do komputera poprzez usb. Moje środowisko to linux + eclipse. Co do urządzenia, komunikacja odbywa się za pomocą ramek, 0xA5 (początek ramki), b1, b2, b3, b4 (4 bajty danych), CRC(8 bitów). Urządzenie do komunikacji wymaga baudrate 115200, znak 8bit, bez bitu parzystości. Napisałem program, który przesyła do urządzenia ramkę mającą zmieniać konfigurację urządzenia, jednak to co wysyłam zdaje się zupełnie nie wpływać na urządzenie. Nie wiem gdzie może być problem, więc chciałbym wykluczyć chociaż jedną z opcji - program.
Wrzucam kawałki kodu odpowiedzialne za konfigurację portu i wysłanie danych.
struct termios config;
int fd = open(dev_name, O_RDWR);
if(fd<0){
cerr<<"unable to open device "<<dev_name<<" for configuration"<<endl;
return -1;
}
if (tcgetattr(fd, &config)) {cerr<<"tcgetattr: Error"<<endl; return -1;}
config.c_cflag &= ~(CSIZE | PARENB);
config.c_cflag |= CS8;
cfsetispeed(&config, B115200);
cfsetospeed(&config, B115200);
if (tcsetattr(fd, action, &config)==-1) {cerr<<"tcsetattr: Error"<<endl; return -1;}
close (fd);
unsigned char bytes[6];
bytes[0] = 0xA5;
bytes[1] = 0x01;
bytes[2] = 0x01;
bytes[3] = 0x02;
bytes[4] = 0x00;
bytes[5] = 0xA9;
wr = write(fd, bytes, sizeof(test));
if (wr==-1){
cerr<<"write error"<<endl;
}
cout<<"written bytes: "<<wr<<endl;