siargy 6 28 августа, 2023 Опубликовано 28 августа, 2023 · Жалоба Добрый день, помогите решить проблему. Есть микроконтроллерное устройство с выходом UART подключаюсь к нему с компьютера через переходник USB или HC-05 на скорости 230.4к. В терминале соединение и обмен работают в обоих случаях подключения. Написал програмку, которая сканирует COM порты в поисках железки, она с USB переходником работает, а через HC-05 выскакивает ошибка. Quote SerialPort sp = new SerialPort(); sp.PortName = portname; sp.Parity = Parity.None; sp.BaudRate =230400; sp.ReadTimeout = 1000; sp.Open(); Поскольку в терминале все работает, очевидно проблемма в библиотаках или драйверах для C#. Может есть какой то другой способ работы с COM-портами? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 28 августа, 2023 Опубликовано 28 августа, 2023 · Жалоба Тогда используйте Windows API напрямую Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 39 28 августа, 2023 Опубликовано 28 августа, 2023 · Жалоба 12 часов назад, siargy сказал: подключаюсь к нему с компьютера через переходник USB или HC-05 на скорости 230.4к. А вы уверены, что HC-05 должен работать на скорости 230400 без ошибок? Какие у него на этот счет паспортные данные? P.S. У меня HC-06, и я с ним работаю на скорости 9600 baud :). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 23 28 августа, 2023 Опубликовано 28 августа, 2023 · Жалоба да, там скорости 9600 или 19200. На практике у меня работало на 115200, причем модули купленные неск лет назад работала без ошибок, а новые периодически кусали посылки. 13 hours ago, siargy said: Добрый день, помогите решить проблему. Есть микроконтроллерное устройство с выходом UART подключаюсь к нему с компьютера через переходник USB или HC-05 на скорости 230.4к. В терминале соединение и обмен работают в обоих случаях подключения. Написал програмку, которая сканирует COM порты в поисках железки, она с USB переходником работает, а через HC-05 выскакивает ошибка. Поскольку в терминале все работает, очевидно проблемма в библиотаках или драйверах для C#. Может есть какой то другой способ работы с COM-портами? я работаю используя Read File Write File в синхронном режиме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
siargy 6 29 августа, 2023 Опубликовано 29 августа, 2023 · Жалоба 8 hours ago, Xenia said: А вы уверены, что HC-05 должен работать на скорости 230400 без ошибок? ну если правильно настроить адаптер и микроконтроллер, то все отлично работает, но в моем случае только в терминале. сам модуль конфигурируеца почти до 4Мбит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
siargy 6 29 августа, 2023 Опубликовано 29 августа, 2023 · Жалоба 18 hours ago, x893 said: используйте Windows API напрямую это аппаратная привязка к оборудованию или как? 8 hours ago, firstvald said: Read File Write File в синхронном режиме. можете пример показать, я совсем далек от программирования приложений. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 224 29 августа, 2023 Опубликовано 29 августа, 2023 · Жалоба 9 часов назад, Xenia сказал: А вы уверены, что HC-05 должен работать на скорости 230400 без ошибок? Какие у него на этот счет паспортные данные? Он и на 921600 должен работать. И работает без проблем. 9 часов назад, Xenia сказал: P.S. У меня HC-06, и я с ним работаю на скорости 9600 baud :). Вы - весьма неспешны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 23 29 августа, 2023 Опубликовано 29 августа, 2023 · Жалоба так это пионэры гонят через HC видео , ветераны шлют телеграммы. Есть статья Титова. Она каноническая. В конце концов, все ссылки на нее приходят. Я сам по ней разбирался. Скачайте и начните разбираться. Там как раз на API пишется. Вам достаточно синхронного режима. У вас уйдет месяц , но вы сможете потом тащить свой код дальше повсюду. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 224 29 августа, 2023 Опубликовано 29 августа, 2023 · Жалоба 15 минут назад, firstvald сказал: Вам достаточно синхронного режима. У вас уйдет месяц , но вы сможете потом тащить свой код дальше повсюду. Месяц??? Да ладно! Для реализации overlapped-обмена достаточно прочитать описание функций WinAPI: ReadFile(), WriteFile(), WaitCommEvent(), SetCommMask(), WaitForSingleObject(), WaitForMultipleObjects(), GetOverlappedResult() + ещё нескольких. И пару дней на реализацию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 23 29 августа, 2023 Опубликовано 29 августа, 2023 · Жалоба да да. тогда топик спокойно может вас попросить уделить ему два дня и написать его задачу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
siargy 6 30 августа, 2023 Опубликовано 30 августа, 2023 · Жалоба 17 hours ago, firstvald said: Есть статья Титова. в C# это не работает 🤐 найти пример где СОМ-порт открываеца как файл тоже сходу не удалось. 17 hours ago, jcxz said: WriteFile() если не трудно накидайте пример, чтобы отправить запрос: byte[] rqSearch = { 0x0F, 0x00, 0x00, 0x02, 0xff, 0x04 }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 30 августа, 2023 Опубликовано 30 августа, 2023 · Жалоба 1 hour ago, siargy said: в C# это не работает В С# всё работает. Ключевое слово P/Invoke. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
antis 1 30 августа, 2023 Опубликовано 30 августа, 2023 · Жалоба 1 час назад, siargy сказал: в C# это не работает 🤐 найти пример где СОМ-порт открываеца как файл тоже сходу не удалось. если не трудно накидайте пример, чтобы отправить запрос: byte[] rqSearch = { 0x0F, 0x00, 0x00, 0x02, 0xff, 0x04 }; Установите через NuGet пакет SerialPortStream, там все есть https://www.nuget.org/packages/SerialPortStream/ https://github.com/jcurl/RJCP.DLL.SerialPortStream Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 30 августа, 2023 Опубликовано 30 августа, 2023 · Жалоба я не понял в чём проблема? поднять СОМ на С#? Spoiler private void buttonConnect_Click(object sender, EventArgs e) { //check comport parameters if (comboBoxPortName.SelectedIndex == -1 || comboBoxBaudRate.SelectedIndex == -1) { MessageBox.Show("Serial Port Parameters Missing!"); return; } if (serial_port.IsOpen) serial_port.Close(); try { if (!serial_port.IsOpen) { serial_port.PortName = comboBoxPortName.SelectedItem.ToString(); serial_port.BaudRate = Convert.ToInt32(comboBoxBaudRate.SelectedItem.ToString()); serial_port.Open(); } buttonConnect.Enabled = false; buttonDisconnect.Enabled = true; uart_rx_buff_size = (int)numericUpDownBuffSize.Value; } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void buttonDisconnect_Click(object sender, EventArgs e) { if (serial_port.IsOpen) { serial_port.DiscardInBuffer(); //serial_port.Dispose(); serial_port.Close(); } buttonConnect.Enabled = true; buttonDisconnect.Enabled = false; labelAlive.BackColor = Color.Red; } private void comboBoxPortName_DropDown(object sender, EventArgs e) { ports = SerialPort.GetPortNames(); comboBoxPortName.Items.Clear(); comboBoxPortName.Items.AddRange(ports); } private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { if (terminal_enable) { string str = serial_port.ReadExisting(); BeginInvoke((MethodInvoker)delegate { string_builder.Append(str); if (string_builder.Length >= uart_rx_buff_size) { richTextBoxReceive.AppendText(string_builder.ToString()); string_builder.Clear(); } }); } } //OR POLLING WAY private string ReadComPort(int timeout, int delay) { char chr; string str = ""; int ticks = 0; while (comport.BytesToRead == 0) { Thread.Sleep(1); ticks++; if (ticks > timeout) { return "NO_RESP\r"; } } while (comport.BytesToRead > 0) { chr = (char)comport.ReadChar(); str += chr; Thread.Sleep(delay); } return str; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
siargy 6 30 августа, 2023 Опубликовано 30 августа, 2023 · Жалоба 19 minutes ago, jenya7 said: в чём проблема? возникает исключение в определенных ситуациях (скрин в первом сообщении), при этом оборудование работает с точно такимижэ настройками в терминале Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться