关于串口接收数据函数不被触发问题
我编写一个串口程序,在一个电脑上利用虚拟串口收发数据,但是自己程序发送没问题,使用串口助手给自己程序发送数据,自己程序中串口接收数据函数不被触发。一些关键设置,我已经做了,求高手帮助
if(!m_ComPort.get_PortOpen()) // 如果串口是关闭的
{
m_ComPort.put_CommPort(PortConfig->m_port_no.GetCurSel()+1); // 首先是指定端口号,使用方法m_MSCOM.put_CommPort(m_port.GetCurSel()+1);
m_ComPort.put_InputLen(0); // 设置当前接收区数据长度为0,表示全部读取
m_ComPort.put_InBufferSize(1024); // 设置当前接收区数据长度为1024
m_ComPort.put_OutBufferSize(1024); // 设置当前发送区数据长度为1024
m_ComPort.put_RThreshold(1); // 缓冲区一个字符引发事件
m_ComPort.put_RTSEnable(1); // 设置RT允许
m_ComPort.put_InputMode(1); // 以二进制方式读写数据 用来设定数据接收模式,1表示二进制,0表示文本
.............................................................
void CMy40KW_UI_SoftWareDlg::OnMSCOM_FUNCTION()
{
// TODO: 在此添加命令处理程序代码
VARIANT m_input ;
unsigned int iCount=0;
CString strtemp;
BYTE data[1024]; // 定义存放二进制数据的数组
memset(data,0,sizeof(data)); // 清空读取数据缓冲区
unsigned int nEvent= m_ComPort.get_CommEvent(); // 获得事件编号
switch(nEvent)
{
case 1: AfxMessageBox(_T("进入数据处理0"));break;
case 2: //接收缓冲区有数据
iCount = m_ComPort.get_InBufferCount(); // 接收到的字符数
if(iCount>0) // 如果接收的字节数大于等于0
{
InputData=m_ComPort.get_Input(); // 读缓冲区
fs=InputData; // VARIANT型变量转换为COleSafeArray型变量
PosSize= fs.GetOneDimSize(); // 获取读取字节数
for(long k=0;k<PosSize;k++)
{
fs.GetElement(&k,data+k); // 转换为BYTE型数组
}
memcpy(TempData,data,sizeof(data)); // 内存拷贝
}
}