Member 14589606 Ответов: 1

Печать неправильного вывода-просто


Привет,
Я сохранил выходные данные в текстовый файл, и в нем есть несколько несвязных символов.
Это то, что я использую:
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();
                             }
                         }



0040.0
0020.1 0050.0 0000.0 0100.0 0100.0 0000.0 0010.5 0000.0 0009.0 0000.0 0009.0 0000.0 00
09.0 00000000000000000000000000000000
0040.0 0020.1 0050.0 0000.0 0100.0 0100.0 0000.0 0010.5 0000.0 0009.0 0000.0 0009.0 0000.0 0009.0 00000000000000000000000000000000
0040.0 0020.1 0050.0 0000.0 0100.0 0100.0 0000.0 0010.4 0000.0 0009.0 0000.0 0009.0 0000.0 0009.0 00000000000000000000000000000000
0040.0 0020.1 0050.0 0000.0 0100.0 0100.0 0000.0 0010.4 0000.0 0009.0 0000.0 0009.0 0000.0 0009.0 00000000000000000000000000000000

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

Я сохраняю его в текстовый файл, но он выдает вышеупомянутый ввод

Richard Deeming

Мы понятия не имеем, какие данные получает ваш последовательный порт и почему выходные данные, которые вы показали, "неверны".

На первый взгляд, вы читаете и сохраняете данные в виде string- но это не должно быть ниточкой.

MadMyche

Я бы проверил некоторые из этих "неправильных" символов и посмотрел, каково их фактическое значение ASCII (подсказка: прочитайте отдельные байты/символы). Оттуда вы можете определить, предназначены ли эти отдельные символы вообще для печати; они могут быть "непечатаемыми" по дизайну, некоторые примеры могут быть управляющими символами ASCII, которые используются в качестве разграничителей

1 Ответов

Рейтинг:
2

ZurdoDev

Это происходит потому, что Вы читаете в байтах, а не конвертируете в строку перед сохранением в файл. Хороший пример можно найти здесь, c# - Как сохранить входящие данные из последовательного порта в текстовый файл - переполнение стека[^]


Richard Deeming

Последовательный порт.ReadExisting[^] уже преобразует данные в строку.

Более вероятно, что данные должны быть прочитаны и сохранены в виде необработанных байтов.

Но не зная, что такое входные данные или почему выходные данные "неверны", мы просто предполагаем. :)