PDA

Просмотр полной версии : как грамотно работать с Com-портом на с++



light_finder
20.04.2009, 14:41
Господа! При работе с приборами под UNIX довольно часто возникают непонятки при чтении ответов модулей из порта. Скажите, пожалуйста, какие функции лучше всего использовать для получения нормальных ответов?

Зы Уже были опробованы следующие методы:

1) FILE * port;
char answer[N]
port = fopen("/dev/ttyS0","r");
fscanf(port,"%s",answer);
fclose(port);

Вместо N естественно указывалась размерность строки, в которую помещается ответ.

Эти функции не всегда корректно читают ответы приборов. Например, вместо >3E считывают только E

2) char answer[N];
ifstream portOut("/dev/ttyS0");
portOut.getline(answer,sizeof(answer));
portOut.close();

3) char answer[N];
fstream port("/dev/ttyS0");
port >> answer;
port.close();

Данные функции тоже не всегда считывают то, что надо. Например, они не читают ответ МВА8.

Думаю, дело в настройке буфера порта. Пожалуйста, помогите его настроить так, чтобы все ответы считывались нормально.

light_finder
06.05.2009, 16:32
всем спасибо