Member 14589606 Ответов: 3

Проблема последовательной связи RS-232 при чтении и записи


Привет,

Я пытаюсь отправить команды в печь Vötsch на основе протокола ASCII-II, но печь, похоже, не отвечает. Comm-порт USBTOserial-это COM3

Посылаю ли я его неправильно или читаю неправильно?
Это мой код.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.IO.Ports;



namespace Serial_Test
{
    class Program
    {  
        static SerialPort mySerialPort;
        static void Main(string[] args)
        {   
            mySerialPort = new SerialPort("COM3", 9600);

           


            try
            {
                mySerialPort.Open();
                mySerialPort.Write("$01I\r");

                while (true)
                {
                    try
                    {
                        if (mySerialPort.BytesToRead > 0) //if there is data in the buffer
                        {
                            byte b=(byte)mySerialPort.ReadByte(); //read a byte
                            Console.Write(b);
                            mySerialPort.Close();
                        }
                        //other code that can execute without being held up by read method.
                    }
                    catch (IOException ex)
                    {
                        Console.WriteLine(ex);
                        //error handling logic
                    }
                }

               

            }
            catch(IOException ex){

                Console.WriteLine(ex);
           }
        }
        
            }

        

        }


Что я уже пробовал:

Команда, которую я должен отправить, - это $01I<cr>, которая дает статус печи, но она не отвечает. Любые идеи будут оценены по достоинству

3 Ответов

Рейтинг:
22

CPallini

Ваш код кажется мне правильным.
Я бы попытался отправить ту же строку с последовательным терминалом (например, , шпатлевка[^]) для того, чтобы проверить, действительно ли печь общается.
Затем я проверил бы параметры связи (последовательную скорость и флаги) SerialPort объект.


Patrice T

+5

CPallini

Спасибо!

Рейтинг:
16

OriginalGriff

Начните с проверки того, что вы можете общаться с устройством напрямую, а не добавлять неизвестное программное обеспечение в уравнение.

Использовать программу hyperterminal для подключения напрямую, и вручную отправлять эти данные. Вы получаете ответ? Если да, то подумайте о переходе на программное обеспечение.
Если вы этого не сделаете, это может быть огромное количество разных вещей: скорость передачи данных в бодах, BPC, четность, стартовые / стоп - биты, линии управления потоком, неправильные данные, - мы не можем знать, и мы не можем сказать без доступа как к ПК, так и к устройству.

Если вы не можете заставить его работать после этого, попробуйте посмотреть на сайт производителей - большинство из них будут иметь образец кода, который должен работать "из коробки", или будут иметь техническую поддержку, которая будет знать свое оборудование намного лучше, чем мы!


Рейтинг:
10

Patrice T

В дополнение к 2 предыдущим решениям.

Цитата:
Я пытаюсь отправить команды в печь Vötsch на основе протокола ASCII-II, но печь, похоже, не отвечает.

Отладка последовательного канала связи-это специализированная задача.
- Во-первых, вы должны убедиться, что другое устройство работает должным образом.
Вам нужно терминальное программное обеспечение, например шпатлевка[^], и использовать его для отправки команд и просмотра ответов. Как только это сработает, как ожидалось, переходите к следующему шагу.

- Во-вторых, проверьте свое программное обеспечение. Вам нужен второй компьютер с последовательным портом и программным обеспечением терминала. Свяжите оба компьютера и запустите свою программу, вы получите на терминале то, что посылаете, а затем отправьте ответ своей программе.

Если вы не можете установить связь с устройством, вам нужно убедиться, что все настройки совпадают.
Другой проблемой может быть кабель неправильного типа. Существует в основном 2 типа, прямой и нуль-модем, которые не могут быть обменены.

Последовательный кабель - Википедия[^]