多线程,多接收模式串口类LsComm之二
2010-06-23 20:40:57 来源:WEB开发网二、遗留问题
1.ERR : 流控制模式下可能不正确,自己在这方面没有经验,没有测试。
2.ERR : 结构问题,把 this->m_ComPort.GetSerialPort() 获取 CserialPort 的指针好像不妥,如果类的使用者在程序中这样用
this->m_ComPort.GetSerialPort()->Close();
收发数据的时候就会产生异常。但是由于使用别人的CserialPort类 ,比较
稳定,但有不能破坏别人代码的完整性。
3.ERR : ManualReceiveByConst 方式受 CommTimeOUts 的影响可能不太准确。
其它问题:我的计算机上只有一个串口可用,所以是2-3口短接进行的测试,其它测试还不太完全。
三、由于前一段时间确实比较忙,有好多网友提出的问题,都没有回复,实在非常抱歉,在这里简单的回复一下
1.风也飘飘:你好,我感觉这个类做的很好,但我想实现两台电脑之间的实时数据传输(为字符型),不知道怎么用,可否指点一二?
答: 感觉可以这样写: (1)首先:定义一个接收函数:
void OnReceiveData(LPVOID pSender,void* pBuf,DWORD InBufferCount)
{//在此处理要接收的数据
}
(2)然后,打开串口,监听Com2this->m_ComPort.Open(2,LsComm::CComPort::AutoReceiveBySignal );
this->m_ComPort.SetReceiveFunc((FOnReceiveData)OnReceiveData,this);
(3)发送:char a[10000];//字符数组
BYTE b[10000];//字节数组
memset(a,''''a'''',sizeof(a));
memset(b,0x0b,sizeof(b));
this->m_ComPort.Output(a,sizeof(a)); //发送字符数组
this->m_ComPort.Output(b,sizeof(b)); //发送字节数组
感觉在C里面是不分 char 和字节的,像 char c=’a’;和char c=0x61;是一样的,只不过 char 只能取字符类型范围,超过就被截短。
2. zkf00:中断接收函数OnComBreak怎么用? 答:试验了一下
void OnComBreak(LPVOID pSender,DWORD dwMask,COMSTAT stat)
{
//deal with the break of com here
switch(dwMask)
{
case EV_BREAK:
{
break;
}
case EV_CTS: //在这里处理CTS信号
{
break;
}
}
}
更多精彩
赞助商链接