使用MSComm控件实现串行通信。
给工程添加MSComm控件。
初始化:
m_mscom.SetCommPort(1); 指定串口,参数为1~16
m_mscom.SetInBufferSize(); 设置输入缓冲区的大小
m_mscom.SetOutBufferSize(); 设置输出缓冲区的大小
if (!m_mscom.GetPortOpen())
{ m_mscom.SetPortOpen(TRUE); } 打开串口
m_mscom.SetInputMode(1); 设置输入方式为二进制方式
m_mscom.SetSettings("9600,n,8,1"); 设置波特率等参数
m_mscom.SetRThreshold(); 参数默认为0,则不产生OnComm事件。为1则接收缓冲区收到一个字符就会产生一个OnComm事件
m_mscom.SetInputLen(); 设置从接收缓冲区读取的字符数
MSComm只有一个事件,即OnComm事件
发送数据:
CByteArray sendArr;
//给sendArr赋值
m_mscom.SetOutput(COleVariant(sendArr)); 向发送缓冲区写数据
在函数OnComm中读取数据:
VARIANT variant_inp;
COleSafeArray safearry_inp;
BYTE rxdata[1000];
switch(m_mscom.GetCommEvent())
{
case 2: //表示接收缓冲区内有字符
{
variant_inp = m_mscom.GetInput();
safearray_inp = variant_inp;
len = safearray_inp.GetOneDimSize();
for (int i =0;i<len;i++)
{ safearray_inp.GetElement(&i,&rxdata[i]); }
rxdata[i] = '/0';
}
break;
default:
}