串口接收数据8个字节一组是什么原因?
发现个很奇怪的现象。串口收数据时,不管一次来了多少个字节,只要是超过8个字节的就会给截成几段,按照8个字节一组的方式,比如接收15bytes,就是8+7,每次都这样,但是写入时,是多少个字节就一次性写入多少个字节。不知道什么原因?
我用的不是控件,是ReadFile函数哈、
有知道什么原因的吗?
[解决办法]
你ReadFile、超时设置、以及串口是如何打开的?检测过串口事件吗。这些不清楚 不好说原因
[解决办法]
把ReadFile函数的参数发一下
[解决办法]
你ReadFile的DWORD nNumberOfBytesToRead是不是设置成8了
[解决办法]
楼主上代码,
BOOL WINAPI ReadFile(
_In_ HANDLE hFile,
_Out_ LPVOID lpBuffer,
_In_ DWORD nNumberOfBytesToRead,
_Out_opt_ LPDWORD lpNumberOfBytesRead,
_Inout_opt_ LPOVERLAPPED lpOverlapped
);
想看看你怎么填写的
[解决办法]
1. 如果不是你在ReadFile中指定收8字节的话,我猜测这应该与串口驱动有关,RS-232串口硬件模块16550中有16字节的接收FIFO缓冲。驱动程序可设置收几个字节后发硬件中断。通常设8个比较好。---没人能看到微软的源码。
2. 发送是另外一回事,是被操作系统缓冲了。
[解决办法]
这个是可以直接设置的,楼主直接搜索下
[解决办法]
你的下位机是单片机,so that is her style