开发学院软件开发VC VC6下用控件进行串口通信 阅读

VC6下用控件进行串口通信

 2010-09-04 20:47:52 来源:WEB开发网   
核心提示:CommPort设置串口号InputMode设置为1-Binary,表示以二进制方式检取数据RThreshold设置为1,表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件其它的用默认值,VC6下用控件进行串口通信(4),也可以在OnInitDialog()函数中用代码设置,如下:m_m

CommPort设置串口号

InputMode设置为1-Binary,表示以二进制方式检取数据

RThreshold设置为1,表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件

其它的用默认值。

也可以在OnInitDialog()函数中用代码设置,如下:

m_msCom.SetCommPort(1); // 指定串口号为1(视实际情况而定)
 if (m_msCom.GetPortOpen())
 {
  m_msCom.SetPortOpen(FALSE);
 }
 m_msCom.SetInputMode(1); //1:表示以二进制方式检取数据
 m_msCom.SetRThreshold(1);

//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件

设置好以后,要在程序的开始打开串口,不然是没发使用的。在OnInitDialog中加入以下代码:

m_msCom.SetPortOpen(TRUE); // 打开串口
 m_msCom.GetInput(); //先预读缓冲区以清除残留数据

OK,在你需要的地方可以随时发送串口数据了,很简单:

m_msCom.SetOutput(COleVariant(TXData)); //发送数据TXData

接收串口数据:

首先要添加串口事件消息处理函数,双击控件,弹出添加成员函数对话框,我们用默认的函数名OnOnCommMscomm1,这里也可以更改函数名。

这个函数是用来处理串口消息事件的,如每当串口接收到数据(正如我们前面设置的RThreshold,每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件),就会产生一个串口接收数据缓冲区中有字符的消息事件,刚才添加的函数就会执行,我们在OnOnCommMscomm1函数加入相应的处理代码就能实现自已想要的功能了。在该函数中加入如下代码以接收数据:

// TODO: Add your control notification handler code here
 if (m_msCom.GetCommEvent() == 2) //事件值为2表示接收缓冲区内有字符
 {
  Sleep(100);
  VARIANT rec_data;
  int data_len;
  char cData[1024];
  rec_data = m_msCom.GetInput(); // 读取缓冲区
  data_len = rec_data.parray->rgsabound->cElements;
  memcpy(cData,(char *)rec_data.parray->pvData,data_len);
  cData[data_len] = 0;
  // cData就是指向接收到的字符串的指针
  m_list.AddString(cData); //在listBox控件中显示接收到的数据
 }

上一页  1 2 3 4 

Tags:VC 控件 进行

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接