Пишите в последовательный порт как с помощью pythons serial lib - PullRequest
0 голосов
/ 25 апреля 2018

Я использовал питонов serial lib для записи команд в USB-порт:

ser = serial.Serial()
ser.port = 'com4'
ser.baudrate = 115200
ser.parity = serial.PARITY_NONE
ser.stopbits = serial.STOPBITS_ONE
ser.bytesize = serial.EIGHTBITS
ser.timeout = None
ser.open()
CMD_MOTOR_DRIVE=[1, 249, 3, 6, 42, 100]
ser.write(CMD_MOTOR_DRIVE_1)

Теперь я хочу сделать то же самое в c # с помощью SerialPort class:

SerialPort port = new SerialPort();
port.PortName = ports[0]; //"com4"
port.BaudRate = 115200;
port.Parity = Parity.None;
port.StopBits = StopBits.One;
port.DataBits = 8;
port.Open();
//System.Threading.Thread.Sleep(20);
if(port.IsOpen == true)
{
   log.Info("Port has been opened");
}
while(true)
{
   port.Write("1, 249, 3, 6, 11, 100");
}

Я могу открыть порт, но контроллер, похоже, не отвечает на команду функции port.Write (string).Я не знаю, что является соответствующим способом в C # для преобразования команды в байтовый массив.Я думаю, что я должен использовать функцию port.Write ((Byte [], Int32, Int32)), а не функцию port.Write (string)?

1 Ответ

0 голосов
/ 25 апреля 2018

Проще, чем ожидалось:

byte[] a = { 1, 249, 3, 6, 11, 100 };
port.Write(a, 0, 6);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...