Size: a a a

2020 September 26

YR

Yakov Radko in 💻 Coding Ru
на тестовом пк на разных версиях ядра одинаковое поведение. и только при работе со считывателем.
источник

YR

Yakov Radko in 💻 Coding Ru
НО если я на этом же ПК делаю тотже алгоритм но через System.IO.SerialPorts то все работает прекрасно.
источник

YR

Yakov Radko in 💻 Coding Ru
если я читаю из порта в порт на этом же пк, все ок. нет повреждений. только когда ответ от считывателя пытаюсь получить есть.
источник

YR

Yakov Radko in 💻 Coding Ru
а вот через С/С++ не выходит правильно настроить.
источник

YR

Yakov Radko in 💻 Coding Ru
сегодня пробовал переделать тест под libserial  в составе убунты, вообще не инициализировал никаких дескрипторов в коде, все переложил на плечи библиотеки - результат такой же.
источник

YR

Yakov Radko in 💻 Coding Ru
я понимаю так, что ядро как-то не корректно обрабатывает сигналы от считывателя, возможно он дергает RTS/CTS в процессе передачи, хотя оно выключено, вот ядро и добавляет "помехи в ответ"
источник

A

Andrey Sea in 💻 Coding Ru
брр... стоп-стоп, если через консоль у тебя работает. то ядро тут не при чем
источник

YR

Yakov Radko in 💻 Coding Ru
источник

YR

Yakov Radko in 💻 Coding Ru
у меня работает через нативное апи на C#
источник

YR

Yakov Radko in 💻 Coding Ru
но через голые сисколы - получаю поврежденный ответ.
источник

YR

Yakov Radko in 💻 Coding Ru
как C# инициализирует порт я не могу найти код исходный.
источник

AM

Artur Mustafin in 💻 Coding Ru
Yakov Radko
у меня работает через нативное апи на C#
SerialPort ?
источник

A

Andrey Sea in 💻 Coding Ru
видимо голый сисколов не хватает... а ты пробовал C# декомпилировать?
источник

AM

Artur Mustafin in 💻 Coding Ru
Yakov Radko
у меня работает через нативное апи на C#
потому что там по умолчанию 9600
источник

AM

Artur Mustafin in 💻 Coding Ru
источник

AM

Artur Mustafin in 💻 Coding Ru
private const int defaultDataBits = 8;
       private const Parity defaultParity = Parity.None;
       private const StopBits defaultStopBits = StopBits.One;
       private const Handshake defaultHandshake = Handshake.None;
       private const int defaultBufferSize = 1024;
       private const string defaultPortName = "COM1";
       private const int defaultBaudRate = 9600;
       private const bool defaultDtrEnable = false;
       private const bool defaultRtsEnable = false;
       private const bool defaultDiscardNull = false;
       private const byte defaultParityReplace = (byte) '?';
       private const int defaultReceivedBytesThreshold = 1;
источник

YR

Yakov Radko in 💻 Coding Ru
источник

A

Andrey Sea in 💻 Coding Ru
Artur Mustafin
потому что там по умолчанию 9600
умолчание перекрывается
источник

A

Andrey Sea in 💻 Coding Ru
попробуй другие библиотеки и упростить код... в примере у тебя слишком его много ))
источник

YR

Yakov Radko in 💻 Coding Ru
да но инициализацию делает Syste.IO.SerialPorts.native.so
источник