Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2341500
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:06:29

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) |
给主人留下些什么吧!~~