CserialPort类读写操作

poplst 2011-12-21 08:09:00

各位大侠,我想请教一个问题,我现在使用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();
}
...全文
388 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2012-05-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
请问 我怎么获取read的内容呢?而不是字节个数。
[Quote=引用楼主 poplst 的回复:]

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

各位大侠,我想请教一个问题,我现在使用CserialPort类进行串口通信,现在找到了一个实例,我想询问一下读写操作,对于下面程序代码,我发送数据的时候可以直接用char sBuf[] = "This should appear on the serial port";port.Write(sBuf, strlen(sBuf));但是我读数据的时候 cha……
[/Quote]
zgl7903 2011-12-21
  • 打赏
  • 举报
回复
char sRxBuf[10];
DWORD dwRead = port.Read(sRxBuf, 10);

dwRead为实际读到的字节个数, 不超过定义的缓冲区字节数

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧