簡體   English   中英

LINUX 中的串行通信 (RS232)

[英]Serial Communication (RS232) in LINUX

我目前正在使用 Delphi Prism 進行 Mono 開發。 因此,該軟件可以跨平台,主要運行在Linux操作系統上。 首先,我一直在實現和測試運行我的軟件的基本功能 - 串行和網絡通信。

但我似乎無法通過 Mono 的串行通信實現。 經過網上和 Stackoverflow 搜索,似乎沒有支持 Linux 環境的庫或 .NET 框架。 盡管 Stackoverflow 中其他人提出了一些類似的問題,但答案並沒有真正顯示任何示例。 我有點卡住了。

這是我為 Mono 串行通信編寫的代碼。 訪問此網站后。

  {$IFDEF LINUX}
    if SerialPort1 = nil then
        SerialPort1 := new System.Io.Ports.SerialPort();
    SerialPort1.Close;

    SerialPort1.BaudRate:=19200;
    SerialPort1.DataBits:=8;
    SerialPort1.DtrEnable:=true;
    SerialPort1.Parity:=System.IO.Ports.Parity.Even;
    SerialPort1.PortName:="/dev/ttyS0";
    SerialPort1.ParityReplace:=63;
    SerialPort1.ReadBufferSize:=4096;
    SerialPort1.ReadTimeout:=1000;
    SerialPort1.RtsEnable:=true;
    SerialPort1.StopBits:=System.IO.Ports.StopBits.One;
    SerialPort1.WriteTimeout:=1000;
    SerialPort1.Open;

    while (true) do
    begin
        CommByte[0]:=$FF;
        CommByte[1]:=$04;
        CommByte[2]:=$04;
        CommByte[3]:=thechannel;
        CommByte[4]:=mcommand;
        CommByte[5]:=(CommByte[2] xor CommByte[3] xor CommByte[4]);

        SerialPort1.Write(CommByte,0,6);
        while SerialPort1.BytesToWrite>0 do;
        Thread.Sleep(10);
        Application.DoEvents;
    end;
{$ENDIF}

但是每次我在 Linux 下運行此代碼時,Mono 都會引發一個消息框,其中顯示“請求的功能未實現”。 我不明白為什么。 這甚至可以為 Mono 做嗎?

我需要訪問 Linux 上的串行端口以進行 RS232 通信。

謝謝,

ParityReplace屬性當前未實現。 如果它不是真的需要,就把它扔掉,你可能不會有這個例外。 如果您需要它,請告訴我,它可以使用PARMRK並將標記更改為該字節來完成。 但是,我還必須找到如何對其進行單元測試的想法;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM