PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] SerialPort读取长度
楼主:
getaway
(夏天快走!!!)
2020-05-28 19:08:33
直接切入正题
访问COM Port使用了
CreateFile
ReadFile
WriteFile..等Win32 API函式
用到"ReadFile"做读取时发现一个跟以前
使用C# Serial.Read很不一样的地方搞不太懂
问题1.
C#使用 Serial.Read时可以以BytesToRead被动决定要读取时的指定长度,
反之在C/C++使用ReadFile反而是要指定主动决定要读取多长,
可是使用者如果不知道回传资料长度如何指定?
BOOL WINAPI ReadFile(
__in HANDLE hFile,
__out LPVOID lpBuffer, // 字串Buffer
__in DWORD nNumberOfBytesToRead, // 要读取的Byte数
__out LPDWORD lpNumberOfBytesRead, // API回填已读取Byte数
__in LPOVERLAPPED lpOverlapped // OVERLAPPED
);
作者:
SeamusBerloz
(轩摩斯)
2020-05-28 19:51:00
lpNumberOfBytesRead 不就是回传长度吗?nNumberOfBytesToRead 应该是指最多不要超过此长度吧。
作者:
annheilong
(方格子)
2020-05-28 23:30:00
一种做法是跟他说buffer大小,然后看实际读多少回来通常protocol读完head后面 会再读取后续资料长度例如读完0x02 head后,再读2 bytes知道剩下多长(不含tail跟CRC所以读到1 byte 0x02后,再读2 bytes知道后面长度然后回圈读取后面长度 读完再读tail跟CRC
楼主:
getaway
(夏天快走!!!)
2020-05-29 02:18:00
开心,原本还担心不知道达人我在问什么,看完回复后有一些可以尝试的想法了,以protocol来处理也可以,只是蛮确定以前处理C#时的ByteToRead在沟通接口上就已经预知stdin buffer可以读进的资料长度
作者:
kobe8112
(小B)
2020-05-29 11:55:00
因为那不是预知啊...那是已经放在缓冲区的资料
楼主:
getaway
(夏天快走!!!)
2020-06-03 11:20:00
补上意外发现的处理方式但未经验证SetCommMask跟WaitCommEvent有兴趣的参考如右边连结
https://reurl.cc/L3DxkX
继续阅读
[问题] main()和main(void)的差别
pandaren0905
[问题] 不能无法用malloc初始化物件
ericerix
Re: [问题] MFC的鼠标事件
enthos
[问题] MFC的鼠标事件
student23489
请问namespace前的双冒号
butterflyred
[问题] CLion的gcc.exe损坏
jack41402
[问题] 为何外部传Object 可读其Object private值
joejoe14758
Re: [讨论] 对于同事的coding style感到很感冒
poyenc
Re: [讨论] 对于同事的coding style感到很感冒
lovejomi
Re: [讨论] 对于同事的coding style感到很感冒
lovejomi
Links
booklink
Contact Us: admin [ a t ] ucptt.com