Я использовал класс SerialPort
из C ++ / CLI (Windows::IO::Ports
), чтобы открыть последовательный порт и связаться с периферийным устройством, и все, кажется, работает.Порт открывается, и данные отправляются. Но я не получил ответ от периферийного устройства.
Я использую код вроде:
SerialPort^ _serialPort;
_serialPort = gcnew SerialPort();
//_serialPort = gcnew SerialPort("COM1",115200,Parity::None, 8, StopBits::One);
// Allow the user to set the appropriate properties.
_serialPort->PortName = "COM1";
_serialPort->BaudRate = 115200;
//Parity None by default
//_serialPort->Parity = Parity::None;
_serialPort->DataBits = 8;
_serialPort->StopBits = StopBits::One;
// Set the read/write timeouts
_serialPort->ReadTimeout = 1000;
_serialPort->WriteTimeout = 500;
_serialPort->Open();
Использование программы для мониторингапри связи через последовательный порт кажется, что количество стоп-битов равно 0. Как вы видите, я установил стоп-биты на 1, и даже самое странное, что значение по умолчанию равно 1. Я не знаю, почему он сохраняетбудучи 0. Я пытался изменить скорость передачи данных и бит данных, и он изменился, но с StopBits это никак не получится ...
Это действительно жалко, потому что, кажется, это действительно легче использоватьдругие коды в Интернете.
Кто-нибудь может мне помочь?Есть идеи, почему это не сработало?
Может кто-нибудь сказать мне тогда, если этот код в порядке?
отправленный массив: array<Byte>^ bytes = gcnew array<Byte>(32);
(он инициализируется с некоторымизначения)
для отправки данных, которые я использую: _serialPort->Write(bytes,0,32);
Чтобы прочитать данные, которые я пробовал:
_serialPort->Read(readarray,0,18);
_serialPort->ReadExisting();
И никто из них не возвращает никаких данных ...Когда я использую Serial Port Monitor, чтобы открыть сообщение и отправить те же байты, он отвечает ...