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.
Думаю, дело в настройке буфера порта. Пожалуйста, помогите его настроить так, чтобы все ответы считывались нормально.
Зы Уже были опробованы следующие методы:
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.
Думаю, дело в настройке буфера порта. Пожалуйста, помогите его настроить так, чтобы все ответы считывались нормально.