WEB开发网
开发学院软件开发VC 多线程,多接收模式串口类 LsComm 之二 阅读

多线程,多接收模式串口类 LsComm 之二

 2006-07-21 11:15:53 来源:WEB开发网   
核心提示: 原因: 全部的事件都可以用AutoReceiveBySignal方式实现修改: 暂时保留:DWORD dwStoredFlags = EV_BREAK | EV_CTS | EV_DSR | EV_ERR | EV_RING |EV_RLSD | EV_RXCHAR | EV_RXFLAG

原因: 全部的事件都可以用AutoReceiveBySignal方式实现

修改: 暂时保留:DWORD dwStoredFlags = EV_BREAK | EV_CTS | EV_DSR | EV_ERR | EV_RING |EV_RLSD | EV_RXCHAR | EV_RXFLAG ;

//??| EV_TXEMPTY 添加后在首次执行时总是接收不到全部数据 ,以后就正常了。现在还搞不清楚是什么原因。

5. ERR : 感觉 ManualReceiveByConst 意义不大应该去掉

原因: 实现方式不太好

修改: 暂时保留

二、遗留问题

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 只能取字符类型范围,超过就被截短。

上一页  1 2 3 4 5  下一页

Tags:线程 接收 模式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接