|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
Читаю бинарную дату Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Но так как дата бинарная вижу в текст боксе краказябы. А как мне увидеть реальные данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 12:49 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
char это юникод. Читай в массив byte[], в конце конвертируй в строку Encoding.ASCII.GetString() ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 12:54 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
Dima Tchar это юникод. Читай в массив byte[], в конце конвертируй в строку Encoding.ASCII.GetString() спасибо. так работает Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 13:24 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
а вот еще такая проблема условие while (serial_port.BytesToRead > 0) не всегда адекватное. уж не знаю какой там механизм но байт в приемном буфере может приходить с задержкой. чтоб вычитать все данные приходиться применять такой механизм Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
а что то красивее можно придумать? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 15:08 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
jenya7, можно подписаться на события получения данных, тогда циклов не нужно будет - что пришло, то сразу и получил ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 06:44 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
Pallarisjenya7, можно подписаться на события получения данных, тогда циклов не нужно будет - что пришло, то сразу и получил делал и так Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
все равно криво работает ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 09:20 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
jenya7, а в чем кривость-то заключается? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:18 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
Кстати, реализацию DataReceivedHandler я бы сделал не так: сначала бы все считал из порта, потом бы проверял inokeRequired и просто бы добавлял к тексту полученные символы. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:21 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
PallarisКстати, реализацию DataReceivedHandler я бы сделал не так: сначала бы все считал из порта, потом бы проверял inokeRequired и просто бы добавлял к тексту полученные символы. так? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 12:17 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
А на основании чего Вы начинаете читать? Наверное есть команда Write, Вы просите сначала некое устройство "отдать" вам дату? Формат ответа какой ASCII или byte[]. Если ASCII, то что у вас является началом и концом передачи. Если byte[], то какова длина ответа и откуда Вы это знаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:43 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
fortibransaА на основании чего Вы начинаете читать? Наверное есть команда Write, Вы просите сначала некое устройство "отдать" вам дату? Формат ответа какой ASCII или byte[]. Если ASCII, то что у вас является началом и концом передачи. Если byte[], то какова длина ответа и откуда Вы это знаете? я передаю команду - выдай мне столько то байт. но я хочу читать из порта пока идет передача данных. не привязываясь к длине. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:57 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
jenya7, протокол передачи данных существует или только на уровне, есть поток и из него мы что-то читаем? нельзя просто взять и читать данные от балды =) более того, с комп порта можно получить поврежденные данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 15:29 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
Roman Mejtesjenya7, протокол передачи данных существует или только на уровне, есть поток и из него мы что-то читаем? нельзя просто взять и читать данные от балды =) более того, с комп порта можно получить поврежденные данные. нельзя? нужно! нужно вычитать сырые бинарные данные от балды. а верхний леер сделает парсинг данных. там есть и заголовок и CRC. но сначала данные нужно загрузить на комп. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 16:20 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
COM-порт так не работает ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 17:31 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
Konst_OneCOM-порт так не работает раскажите мне как работает COM-порт. а то я за 10 лет так и не разобрался. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 17:33 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
откройте наконец для себя hyperterminal (в винде 10 нет уже) и посмотрите, как работает ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 18:00 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
авторНо так как дата бинарная вижу в текст боксе краказябы. А как мне увидеть реальные данные? А что такое реальные данные? Каждый байт можно представить в HEX формате, будет красивее, но, возможно, ни разу не понятнее. Может быть там идут числа с плавающей точкой, числа в big-endian или little-endian, строки в UTF или DOS-кодировке... да мало ли что, даже бессмысленный паддинг может быть. Это как раз ваша задача: зная формат, вывести данные в красивом виде. PS: Вот тут пример читалки RFID-меток , которая из одного порта читает, переделывает немного данные и в другой порт отправляет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 18:15 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
jenya7PallarisКстати, реализацию DataReceivedHandler я бы сделал не так: сначала бы все считал из порта, потом бы проверял inokeRequired и просто бы добавлял к тексту полученные символы. так? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
не, вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
авторя передаю команду - выдай мне столько то байт. но я хочу читать из порта пока идет передача данных. не привязываясь к длине. Если в протоколе обмена нет четкого задекларированного сообщения, что в ответе будет N байт (что не очень хорошо, но бывает), то можно поступить, например, так. Подписавшись на событие и получив в нем данные, перезапускать некий таймер, скажем на 500мс, по истечении которого принимать решение, что все, больше ничего не дождемся в данном сеансе обмена. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 05:47 |
|
Чтение из сериального порта.
|
|||
---|---|---|---|
#18+
Pallaris не, вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Если в протоколе обмена нет четкого задекларированного сообщения, что в ответе будет N байт (что не очень хорошо, но бывает), то можно поступить, например, так. Подписавшись на событие и получив в нем данные, перезапускать некий таймер, скажем на 500мс, по истечении которого принимать решение, что все, больше ничего не дождемся в данном сеансе обмена. спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 11:43 |
|
|
start [/forum/topic.php?fid=20&fpage=29&tid=1399304]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
235ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 345ms |
0 / 0 |