我使用Luars233庫進行使用Lua的串行通信。我需要發送數據字節而不用ASCII格式轉換它們,但luars232的寫入功能在傳輸之前將數據轉換爲ASCII,即使我將它作爲數字(數據類型)傳遞給函數。請提供可能的幫助使用luars232避免在串行通信中進行ASCII轉換
0
A
回答
0
我已經通過在字符串數據類型中使用轉義序列解決了該問題,例如'\ 2'會使用luars232的寫入功能將0x02傳遞到串行端口。但是這限制了在傳輸之前對數據執行數學運算。歡迎進一步的建議。
0
庫使用標準Lua規則通過luaL_checklstring將數據參數強制轉換爲字符串。所以,如果你想完全控制數據,你應該傳遞一個字符串。一個Lua字符串是一個計數的字節序列。
當然,正如您發現的那樣,字面轉義字符序列將起作用。
您也可以使用string.char(...)函數,該函數接受零個或多個值爲0-255的列表,並使用這些字節值創建字符串。
如果你有一個字節table sequence,你可以unpack它們放入一個列表:
local bytes = { 27, 76, 117, 97 }
port:write(string.char(table.unpack(bytes)))
所以,是的,你必須轉換爲字符串。但是,你可以推遲,直到寫電話之前。
相關問題
- 1. 如何避免使用通用返回值進行轉換?
- 2. C++避免使用typedef進行類型轉換警告
- 3. XSLT 1.0:如何避免ascii轉換?
- 4. 避免在div中換行
- 5. 避免換行()
- 6. 將字符串轉換爲數字進行求和並避免使用NaN
- 7. 在C#中使用RS-485轉換器和服務器進行串口通信
- 8. 使用C++進行串行通信時,發送'int'而不是ASCII字符
- 9. 使用C#的掃描器進行串行通信端口(串行)通信
- 10. Python多重處理:避免在進程之間通過模塊進行通信
- 11. 在表格6i中使用MSCOMM32.OCX進行串行通信
- 12. 在PyQT中使用QThread進行串行通信(w。pyserial)
- 13. Java StringBuffer,ASCII字符和串行通信
- 14. 避免使用connection.execute進行sql注入
- 15. 通過C#進行串行通信
- 16. 使用out-file時避免換行
- 17. 使用HTML編程避免換行
- 18. 在Ubuntu上使用USB轉串口轉換器的串行通信
- 19. 避免在Rails中進行輪詢
- 20. 使用Spark進行字符串轉換
- 21. Python:與USB到串行轉換器的串行通信失敗
- 22. 使用Bash通過串行端口進行通信
- 23. 避免Flash上傳時進行imagemagic轉換30秒超時?
- 24. 在doxygen輸出中避免換行
- 25. 在寫輸出中避免換行
- 26. 如何避免在Safari中換行?
- 27. 使用CC2520進行通信
- 28. 避免使用C++/CLI屬性進行雙重轉義
- 29. QMessageBox避免自動換行
- 30. 從split()避免換行符?
順便說一句,Lua用於字符串轉換的字符集和編碼是由語言環境決定的,該語言環境特定於線程/進程/用戶/操作系統的時間點。 (提示:除非你這樣做,否則它不太可能是ASCII。) – 2014-09-04 02:08:12