我用Cygwin中的CLISP打開串口作爲IO流,發現逐字符讀取速度太慢。出於某種原因,該流被分類爲交互式,我相信這會導致它掛起的讀取量小於我的序列大小。爲什麼read-sequence不會在控制檯流結束時返回?
我正在與特殊系統上的調試端口進行交互。我打算花一點時間來編寫一些互動,但最終還是剃掉了一隻犛牛。
我看到幾種不同的方法來解決這個問題。
一次讀取1個字符,允許讀char-no-hang。這太慢了。
將FFI寫入串行庫。我認爲我不應該這樣做。
找到一些方法來確定流的剩餘長度。好的解決方案
找出如何使串行端口非交互式,這可能導致讀序列在數據流結束時返回。這對我來說似乎是最好的解決方案。
(with-open-file (serial "/dev/ttyS3" :direction :io :external-format :unix :if-exists :overwrite) (read-sequence *data* serial)))
所以,每個稱號,爲什麼讀序時不與控制檯流的最後返回?此外,實現該行爲的最佳方式是什麼?我寧願堅持使用基本的CLISP。