Люди добрые обьясните как послать в порт 16 байт в HEX без пробелов и перевода строки? Может кто скажет еще как хранить в массиве числа в HEX?
Все мои старания ни к чему не приводят пробовал хранить данные в массиве INT потом перебор массива и INT2HEX, но эта зараза гдето вставляет перевод строки и в COM порт попадает уже нарезка по 2 байта (причем второй байт перевод строки). Пробовал склеивать строку из данных но тут проблемка как мне в MEMORY хранить H00 (NUL) ? и откуда беруться пробелы?
Этот топик читают: Гость
Ответов: 26
Рейтинг: 0
|
|||
карма: 1 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
N0D, без схемы, по одному описанию, ничерта не поймешь. Так что -- схему в студию.
|
|||
карма: 22 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
N0D писал(а): Может кто скажет еще как хранить в массиве числа в HEX?Такого понятия как "хранение чисел в hex" нет. Запись ввиде hex значения это уже строка, а не число. Лишние байты в порт попадать не могут - тут ошибка в схеме |
|||
карма: 27 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Похоже, у темы должно быть другое название
Врядли тут COM-порт причем хоть с какого-то боку |
|||
карма: 9 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 3 раз(а), последний 2021-05-21 07:52:05 |
|||
карма: 0 |
|
Ответов: 5227
Рейтинг: 587
|
|||
думается массив надо сначало приготовить к отправке
code_2057.txt |
|||
карма: 4 |
| ||
файлы: 1 | code_2057.txt [3.3KB] [457] |
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Гость писал(а): чтобы то же самое ушло одной строкой и в HEX а не в STR |
|||
карма: 22 |
|
Ответов: 26
Рейтинг: 0
|
|||
Спасибо что откликнулись, но это только пол дела. После приготовления к отправке это выглядит вот так:
0.00008549 code_2057.exe IRP_MJ_CREATE Serial0 SUCCESS Options: Open 0.00000307 code_2057.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS 0.00000196 code_2057.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS 0.00000196 code_2057.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS 0.00000196 code_2057.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS 0.00000196 code_2057.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS 0.00000196 code_2057.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS 0.00000196 code_2057.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS 0.00000196 code_2057.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS 0.00000838 code_2057.exe IOCTL_SERIAL_SET_BAUD_RATE Serial0 SUCCESS Rate: 9600 0.00000447 code_2057.exe IOCTL_SERIAL_SET_RTS Serial0 SUCCESS 00 0.00000447 code_2057.exe IOCTL_SERIAL_SET_DTR Serial0 SUCCESS 0.00000335 code_2057.exe IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8 0.00000196 code_2057.exe IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13 0.00000363 code_2057.exe IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:1 Replace:40 XonLimit:2048 XoffLimit:512 0.00000196 code_2057.exe IOCTL_SERIAL_SET_TIMEOUTS Serial0 SUCCESS RI:10 RM:10 RC:10 WM:10 WC:10 0.02822929 code_2057.exe IRP_MJ_WRITE Serial0 SUCCESS Length 32: 656500000000000065656565656565 2.55990133 code_2057.exe IRP_MJ_READ Serial0 TIMEOUT Length 0: 0.00000475 code_2057.exe IRP_MJ_CLEANUP Serial0 SUCCESS 0.01028119 code_2057.exe IRP_MJ_CLOSE Serial0 SUCCESS данные выстроились в строку, НО это по прежнему STR а не HEX! Обратите внимание отправлено 32 байта, а должно быть 16, т.е. программа отправляет шестнадцатиричное число как два символа. по идее посылка должна состоять из кодов ASCII и начинаться с "е" (код ASCII буквы e - h65) и иметь следующий вид "ее(nul)(nul)(nul)(nul)(nul)(nul)(nul)еееееее" ------------ Дoбавленo: А чем Str не нравится, он полностью поддерживает весь байтовый код?
а (nul) H00 поддерживает??? |
|||
карма: 1 |
|
Ответов: 5227
Рейтинг: 587
|
|||
посмотри Convertor свойство Digits может там сабака порыта ;)...
[size=-2]------ Добавлено в 20:04 да на самом деле, если у тебя устройство стринги читает нафига ему тогда хексы? |
|||
карма: 4 |
|
Ответов: 5446
Рейтинг: 323
|
|||
N0D, используй
|
|||
карма: 1 |
|
Ответов: 9906
Рейтинг: 351
|
|||
N0D писал(а): чтобы то же самое ушло одной строкой и в HEX а не в STRДурдом на каникулах |
|||
карма: 9 |
|
Ответов: 26
Рейтинг: 0
|
|||
ндаа... писатель из меня никудышний...
|
|||
карма: 1 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Чтобы стать кудышным, надо начинать не квантовой физики, а с понимания БАЗЫ: что такое число, строка, символ, цифра, бит, и т.п..
И употреблять эти термины так же, как их понимают другие. Если под одним и тем же словом каждый понимает чего хочешь, сей эпистолярный жанр полностью теряет смысл Хорошое слово HEX Только Вам же русским языком сказали, что это просто строка. От себя добавлю, что состоящяя только из символов числом 16 (а вовсе не из 256), а именно из таких: 0123456789ABCDEF Ясный перец, что Вы понимаете под этим что-то другое. Что - достоверно неизвестно, только догадки. А экстрасенсы, наверное - в отпуске.... Вот и все секреты кудышности |
|||
карма: 9 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Galkov писал(а): Дурдом на каникулахе е е е е е е ' ' ' ' ' ' ' е е, где ' -- пустой символ. |
|||
карма: 22 |
|
Ответов: 26
Рейтинг: 0
|
|||
СПАСИБО ОГРОМНОЕ iarspider !!! последний совет помог!
Выкладываю схему, может кому еще пригодится: code_8048.txt .... 0.01375314 cod.exe IRP_MJ_WRITE Serial0 SUCCESS Length 16: ee.......eeeeeee .... Всем спасибо за участие... |
|||
карма: 1 |
|