首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

CserialPort种读写操作

2012-09-01 
CserialPort类读写操作[codeC/C++][/code]各位大侠,我想请教一个问题,我现在使用CserialPort类进行串口通

CserialPort类读写操作
[code=C/C++][/code]
各位大侠,我想请教一个问题,我现在使用CserialPort类进行串口通信,现在找到了一个实例,我想询问一下读写操作,对于下面程序代码,我发送数据的时候可以直接用char sBuf[] = "This should appear on the serial port";port.Write(sBuf, strlen(sBuf));但是我读数据的时候 char sRxBuf[10]; DWORD dwRead = port.Read(sRxBuf, 10);
该如何解释?DWORD类型的dwRead是什么呢?如果我要读取的数据是个字符串序列呢?肯定各位能给个介绍,谢谢。。
BOOL CSerialPortApp::InitInstance()
{
  BYTE* pBuf = new BYTE[10000];

  COMMCONFIG config;
  CSerialPort::GetDefaultConfig(1, config);

  CSerialPort port;
  port.Open(1, 1200, CSerialPort::NoParity, 8, CSerialPort::OneStopBit, CSerialPort::XonXoffFlowControl);

  HANDLE hPort = port.Detach();
  port.Attach(hPort);

  DWORD dwModemStatus;
  port.GetModemStatus(dwModemStatus);

  DCB dcb;
  port.GetState(dcb);

  dcb.BaudRate = 9600;
  port.SetState(dcb);  

  DWORD dwErrors;  
  port.ClearError(dwErrors);

  port.SetBreak();
  port.ClearBreak();

  COMSTAT stat;
  port.GetStatus(stat);

  COMMTIMEOUTS timeouts;
  port.GetTimeouts(timeouts);

  port.Setup(10000, 10000);//设置输入输出缓冲区大小

  port.GetConfig(config);

  config.dcb.BaudRate = 9600;
  port.SetConfig(config);

  port.Set0WriteTimeout();
  port.Set0ReadTimeout();

  char sBuf[] = "This should appear on the serial port";
port.Write(sBuf, strlen(sBuf));

  DWORD dwMask;
  port.GetMask(dwMask);

  port.SetMask(EV_TXEMPTY); 

  //port.WaitEvent(dwMask);

  port.TerminateOutstandingWrites();

  port.TransmitChar('p');

  port.Set0Timeout();

  char sRxBuf[10];
DWORD dwRead = port.Read(sRxBuf, 10);

  port.TerminateOutstandingReads();

  port.ClearDTR();

  port.ClearRTS();

  port.SetDTR();

  port.SetRTS();

  port.SetXOFF();

  port.SetXON();

  COMMPROP properties;
  port.GetProperties(properties);

  port.ClearWriteBuffer();

  port.ClearReadBuffer();

  port.Flush();

  port.Close();
}

[解决办法]
char sRxBuf[10];
DWORD dwRead = port.Read(sRxBuf, 10);

dwRead为实际读到的字节个数, 不超过定义的缓冲区字节数
[解决办法]
添加串口接收响应函数OnComm(WPARAM ch,LPARAM port),ch为接收到的字符,port为端口号;并且在函数内根据要求进行字符串的提取,存至预先定义的字符串缓冲数组中即可。
[解决办法]
[Quote=引用:]
请问 我怎么获取read的内容呢?而不是字节个数。
[Quote=引用:]
[code=C/C++][/code]
各位大侠,我想请教一个问题,我现在使用CserialPort类进行串口通信,现在找到了一个实例,我想询问一下读写操作,对于下面程序代码,我发送数据的时候可以直接用char sBuf[] = "This should appear on the seri……
[/Quote]内容在sRxBuf里啊

热点排行