我使用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. XSLT 1.0:如何避免ascii轉換?
- 3. 避免在div中換行
- 4. 在C#中使用RS-485轉換器和服務器進行串口通信
- 5. 避免使用connection.execute進行sql注入
- 6. 使用out-file時避免換行
- 7. 避免在Rails中進行輪詢
- 8. 使用Spark進行字符串轉換
- 9. Python:與USB到串行轉換器的串行通信失敗
- 10. 如何避免在Safari中換行?
- 11. 在寫輸出中避免換行
- 12. 避免使用C++/CLI屬性進行雙重轉義
- 13. 從split()避免換行符?
- 14. 如何避免在arrayfire中使用flip和transpose進行memcpy?
- 15. 避免在加密和編碼的URL字符串中換行
- 16. 使用Adobe Flash與串行端口進行通信
- 17. 使用GPS進行串行通信 - 連續數據傳輸
- 18. 如何使用vb.net語言進行串行通信
- 19. 使用'GNET'協議與USB設備進行串行通信
- 20. 使用Arduino和C++進行串行端口通信
- 21. 十六進制ASCII字符串轉換
- 22. 如何避免$正在進行錯誤
- 23. 避免在行動
- 24. 避免在通用方法中轉換爲Nothing
- 25. 如何在C#中進行進程間通信時進行進程間通信?
- 26. 將字符串轉換爲十六進制以發送串行通信
- 27. 避免python輸出中的換行
- 28. 串行通信
- 29. 通過串行端口進行通信的Web應用程序
- 30. 在COM端口上通過藍牙進行串行通信
順便說一句,Lua用於字符串轉換的字符集和編碼是由語言環境決定的,該語言環境特定於線程/進程/用戶/操作系統的時間點。 (提示:除非你這樣做,否則它不太可能是ASCII。) – 2014-09-04 02:08:12