1. 工控机通过串口连接了检测设备.
2. 工控机通过定期发送ascii文本命令来获得检测设备的数据. 数据也是ascii文本串. 每次都是一问一答. 没有其它多余通讯.
3. 如果检测设备失灵或很长时间没有响应, 则该函数要及时退出.(超时)
这种要求情况下的读取数据用如下代码.
int Tdm::get_data(char * cmd, char * buffer, int buffer_len)
{
memset(buffer, 0, buffer_len); //清除
cd->Write(cmd, strlen(cmd)); //发出命令
int n_byte = 0;
char x[1024];
while ( ( n_byte = cd->Read(x, 1023) ) > 0 ) //读取
{
strcat(buffer, x); //连接
}
return n_byte;
}
调用的时候:
char flag[256];
char data[512];
get_data("flag", flag, sizeof(flag));
get_data("data", data, sizeof(data));
现在的问题是
1. TybCommDevice有内建的超时功能吗?
2. 用那种package的形式可以实现这些要求吗?
3. 假如TybCommDevice的输入缓冲区内没有数据, Read方法是否会阻塞?
--------------------next---------------------
阅读(1158) | 评论(0) | 转发(0) |