c # и порты связи - PullRequest
       24

c # и порты связи

2 голосов
/ 10 августа 2011

Привет всем, что я пытаюсь включить и выключить A / V-ресивер, с помощью следующей команды RS232:

 @MAIN:VOL=Down & Chr$(13) & Chr$(10)

Это прекрасно работает в моем приложении VB6:

 MSCommAV.CommPort = 4
 MSCommAV.RThreshold = 1
 MSCommAV.Settings = "9600,N,8,1"
 MSCommAV.RTSEnable = True
 MSCommAV.PortOpen = True
 MSCommAV.Output = "@MAIN:VOL=Down" & Chr$(13) & Chr$(10)

Однако я не могу заставить его работать в моем приложении на C #:

 PCComm.CommunicationManager commAV = new PCComm.CommunicationManager();
 commAV.Parity = "None";
 commAV.StopBits = "One";
 commAV.DataBits = "8";
 commAV.BaudRate = "9600";
 commAV.PortName = "COM4";
 commAV.CurrentTransmissionType = PCComm.CommunicationManager.TransmissionType.Text; //.Hex
 commAV.OpenPort();
 commAV.WriteData("@MAIN:VOL=Down" + "\r" + "\n"); //Vol DOWN

Я думаю, что причина, по которой он не работает, заключается в том, что "\ r" и "\ n" заменяют vb6 Chr $ (13) & Chr $ (10).

CommunicationManager.cs: http://snipt.org/xmklh

1 Ответ

5 голосов
/ 10 августа 2011

Я не уверен, что такое PCComm.CommunicationManager.Однако через Serial довольно просто общаться без каких-либо специальных API.Этот код C # является эквивалентом кода VB6:

var port = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);
port.RtsEnable = true;
port.Open();
port.Write("@MAIN:VOL=Down\r\n");
port.Close();

РЕДАКТИРОВАТЬ :

Возможно, ваш CommunicationManager не работает, потому что он не устанавливает1010 * собственность на true.Ваш код VB6 делает это в строке 4.

...