救命救命,关于串口ReadFile的参数错误的问题

fang_jb 2003-03-10 11:20:34
老板让做串口的东西,结果在接收到数据以后
ReadFile函数总是报一个参数错误,这个大致会是什么原因?

我想了几个,第一个参数是串口的句柄,句柄在打开的时候返回,是有效的
第二个参数是接收的BUFF,我这么定义的char* buff = new char[comstat.cbInQue]
第三个参数是接收的长度,我用了commstat.cbInQue,目前确定数值是40,跟踪过了
第四个参数是系统确定的读入的长度,一个LPDWORD,这个也没问题,我定义了一个DOWRD,然后用&去取的
最后一个是LPOVERLAPPED,这个也是事先定义好的,在线程中使用WaitCommEvent的时候最后一个参数带的就是它,为的就是非阻塞的通讯

这个参数错误到底是不是指的函数的输入参数有问题?

各位有经验的麻烦帮帮忙,谢谢谢谢
...全文
148 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fang_jb 2003-03-10
  • 打赏
  • 举报
回复
发现一个问题,MSDN里有这样一段对ReadFile的注释
An application must meet certain requirements when working with files opened with FILE_FLAG_NO_BUFFERING:
File access must be for numbers of bytes that are integer multiples of the volume's sector size. For example, if the sector size is 512 bytes, an application can request reads and writes of 512, 1024, or 2048 bytes, but not of 335, 981, or 7171 bytes.

难道串口的数据结构大小一定要是512的整数倍吗?
串口打开的默认方式是FILE_FLAG_NO_BUFFERING?
pengzhenwanli 2003-03-10
  • 打赏
  • 举报
回复
我写得串口程序没有问题,不过好像用的不是这样
ReadFile( hComm, inBuffer, 1024, &dwBytesRead,&osStatus)
BYTE inBuffer[1024];
DWORD dwBytesRead;

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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