Member 14589606 Ответов: 3

Получение неверный вывод


Вывод, который я получаю после сохранения его в текстовый файл, таков:

?????8 00rL????	????
???r??000.j?r???r?0?0000?
?r??L?r?
?????????r????r??L?r?
&????&????
&I??Mr??
?000000000
	????I??
????&????
???r?????r???r??????0020
Lr??L?r?
?)???r??0000.90000.
&r??&?r?
$???r&????


Я должен был получить что-то вроде этого:
0020.0 0019.9 0010.0 0000.0 0100.0 0100.0 0000.0 0010.9 0000.0 0002.1 0000.0 0002.1 0000.0 0002.1 00000000000000000000000000000000


Это мой код.:

public override void DoJob()
        {
            try
            {
                mySerialPort.Open();

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

                
                //Console.WriteLine("{0} ", CurrentDate);
               // Console.WriteLine("Starting Time: {0}\n", CurrentDate);

                        if (mySerialPort.BytesToRead > 0) //if there is data in the buffer
                        {
                           string b = mySerialPort.ReadExisting(); //read a byte

                            //Console.Write(b);
                            string desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
                            string image1 = System.IO.Path.Combine(desktop, "Temperature_LOG.txt");

                            using (FileStream fs = new FileStream(image1, FileMode.Append, FileAccess.Write))
                            {
                                using (BinaryWriter bw = new BinaryWriter(fs))
                                {


                                    bw.Write(b);
                                  

                                   
                                    //bw.Close();
                                }
                            }



                            //mySerialPort.Close();
                        }


                mySerialPort.Close();

            }
            catch (IOException ex)
            {

                Console.WriteLine(ex);
            }



        }


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

Я не могу найти ошибку, я попытался изменить формат, но безрезультатно

Richard MacCutchan

Используйте отладчик для проверки фактических данных, возвращаемых из порта. Возможно, что кодировка не соответствует этому .Чистый стандарт.

3 Ответов

Рейтинг:
2

OriginalGriff

Скорее всего, это конфигурация последовательного порта, или данные, которые вы получаете, находятся не в том формате, в котором, по вашему мнению, они должны быть.
Начните с отладчика и посмотрите, что именно вы получаете от устройства, и сверьте это с вашим руководством

Если в руководстве указано, что это должны быть читаемые человеком данные, а не двоичные, используйте Hyperterminal или аналогичный для работы непосредственно с устройством и убедитесь, что вы можете получить "реальные данные", прежде чем начать с кода.


Member 14589606

Я попробовал с замазкой, и я получаю правильный ответ:
0020.0 0020.2 0050.0 0029.1 0100.0 0100.0 0000.0 0010.9 0000.0 0001.0 0000.0 000

Настройка скорости передачи данных 9600 бод, в чем может быть проблема?

OriginalGriff

Проверьте свою конфигурацию: скорость передачи данных в Бодах, BPC, четность, стоп-биты ... затем используйте отладчик teh, чтобы точно узнать, что вы получаете.

Рейтинг:
2

Patrice T

Цитата:
?????8 00rL???? ????
???r??000.j?r??? r?0?0000?
?Р??Л?Р?
?????????Р????Р??Л?Р?

Это типично для неправильной настройки последовательного порта.
Последовательный порт имеет настройки, и последовательная связь работает только тогда, когда настройки совпадают с обеих сторон.
Настройки-это скорость передачи данных (скорость), биты, остановки ...

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

[Обновление]
Цитата:
теперь он дает следующее:
0020.0 0020.3 0050.0 0029.1 0100.0 0100.0 0000.0 0010.9 0000.0 0001.0 0000.0 0001.0 0000.0 0001.0 00000000000000000000000000000000
с некоторыми необычными персонажами

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


Member 14589606

теперь он дает следующее:
0020.0 0020.3 0050.0 0029.1 0100.0 0100.0 0000.0 0010.9 0000.0 0001.0 0000.0 0001.0 0000.0 0001.0 00000000000000000000000000000000

с некоторыми необычными персонажами

Рейтинг:
1

IndianaRags

Данные, которые вы показываете, являются двоичными. Вы получаете это, потому что используете BinaryWriter для записи файла. Попробуйте переключиться на TextWriter.