Q
手柄和DCB
1
A
回答
2
您可能正在使用seri但是在Linux中,串行端口的管理與Windows中的管理有所不同。它們之間沒有簡單的一對一映射。而且,在Linux下,串口都是終端,他們可能會讓你大吃一驚。
我會試着解釋一下:
- 一個Windows
HANDLE
將映射到Linux文件描述符。這是一個普通的值。 - 在Windows中,您將獲得
HANDLE
和CreateFile("\\\\.\\COM1", ...)
。在Linux中,您可以通過open("/dev/ttyS0", O_RDWR | O_NOCTTY)
獲得。O_NOCTTY
標誌是爲了避免將此端口作爲您的控制終端(您不希望令人驚訝的控制終端!)。 - 在Windows中,您可以用
CloseHandle(handle)
關閉HANDLE
。在Linux中,使用close(fd)
。 - 在Windows中,您使用
BuildCommDCB()
和SetCommState(...)
配置串口。在Linux中,您可以使用tcgetattr()
,cfmakeraw()
,cfsetspeed()
和tcsetattr()
等等......您可能需要raw
模式。 - 在Windows中,您使用
WriteFile()
發送數據並使用ReadFile()
接收數據。在Linux中,您使用read()
和write()
。
我希望這足以讓你開始。
+0
這是非常好的描述,但是我們能否舉一個例子來收集所有這些觀點。 – YAcaCsh
1
HANDLE
被定義爲指向void(PVOID
= void*
)
(參見:https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751%28v=vs.85%29.aspx)
LPDCB
被定義爲 「一個指向DCB結構」
(請參閱:https://msdn.microsoft.com/en-us/library/windows/desktop/aa363214%28v=vs.85%29.aspx)
相關問題
- 1. Next.js和Redux-Observable。手柄getInitialProps
- 2. 多顯示器和手柄
- 3. Fastmm4和泄漏手柄
- 4. 複製手柄和事後
- 5. 手柄與Logstah和XPath
- 6. 手柄區別
- 7. 手柄條件
- 8. 手柄記錄
- 9. 手柄的entites
- 10. 手柄角4
- 11. 手柄wordrap deliminator
- 12. 手柄SAX parserexception
- 13. 流量控制和DCB結構
- 14. ASP.MVC手柄錯誤
- 15. Socket.io插座手柄
- 16. 什麼是「手柄」?
- 17. 手柄「(空)」在Newtonsoft.JSON
- 18. Android手柄電話
- 19. 手柄事件android
- 20. jquery單滑手柄
- 21. MySQLdb手柄行鎖
- 22. Python手柄輸入?
- 23. 手柄反斜槓
- 24. C安全手柄#
- 25. waveOutSetVolume忽略手柄
- 26. 凌空手柄onErrorResponse
- 27. 手柄/掛鉤RuntimeWarnings
- 28. Bigcommerce模板自定義手柄幫手
- 29. 手柄信號是未知
- 30. 手柄/握槓約定
LPDCB將是一個指向某個地方定義的DCB結構體的指針,您必須通過成員轉換成員。 HANDLE通常是一個內核句柄,它會翻譯成posix上的一個文件描述符(一個int) - 但是在這裏我看到它被誤用來攜帶一個HWND - 並且將它轉換爲linux將會很有趣,因爲目標類型將會是完全由您正在轉換的窗口框架決定。如果有的話。 –
我的理解是,您需要與串行總線上的設備進行通信。這可能會更容易尋找一個linux串行通信庫,而不是移植它。 – Emilien
@Emilien您能指點我一個解釋Windows背後功能的頁面嗎?我使用Linux並且不熟悉Windows串行通信庫。 –