Вверх ↑
Этот топик читают: Гость
Ответов: 26
Рейтинг: 0
#1: 2007-12-27 14:07:53 ЛС | профиль | цитата
Люди добрые обьясните как послать в порт 16 байт в HEX без пробелов и перевода строки? Может кто скажет еще как хранить в массиве числа в HEX?
Все мои старания ни к чему не приводят пробовал хранить данные в массиве INT потом перебор массива и INT2HEX, но эта зараза гдето вставляет перевод строки и в COM порт попадает уже нарезка по 2 байта (причем второй байт перевод строки). Пробовал склеивать строку из данных но тут проблемка как мне в MEMORY хранить H00 (NUL) ? и откуда беруться пробелы?
карма: 1

0
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 26068
Рейтинг: 2121
#2: 2007-12-27 14:13:46 ЛС | профиль | цитата
N0D, без схемы, по одному описанию, ничерта не поймешь. Так что -- схему в студию.
карма: 22

0
Администрация
Ответов: 15294
Рейтинг: 1518
#3: 2007-12-27 15:30:36 ЛС | профиль | цитата
N0D писал(а):
Может кто скажет еще как хранить в массиве числа в HEX?

Такого понятия как "хранение чисел в hex" нет. Запись ввиде hex значения это уже строка, а не число.

Лишние байты в порт попадать не могут - тут ошибка в схеме
карма: 26
0
Ответов: 9906
Рейтинг: 351
#4: 2007-12-27 15:34:32 ЛС | профиль | цитата
Похоже, у темы должно быть другое название
Врядли тут COM-порт причем хоть с какого-то боку
карма: 9

0
Гость
Ответов: 17029
Рейтинг: 0
#5: 2007-12-27 18:18:52 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2021-05-21 07:52:05
карма: 0

0
Ответов: 5227
Рейтинг: 587
#6: 2007-12-27 18:43:39 ЛС | профиль | цитата
думается массив надо сначало приготовить к отправке

code_2057.txt
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
файлы: 1code_2057.txt [3.3KB] [404]
Разработчик
Ответов: 26068
Рейтинг: 2121
#7: 2007-12-27 19:07:55 ЛС | профиль | цитата
Гость писал(а):
чтобы то же самое ушло одной строкой и в HEX а не в STR
А чем Str не нравится, он полностью поддерживает весь байтовый код?
карма: 22

0
Ответов: 26
Рейтинг: 0
#8: 2007-12-27 19:26:36 ЛС | профиль | цитата
Спасибо что откликнулись, но это только пол дела. После приготовления к отправке это выглядит вот так:
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

0
Ответов: 5227
Рейтинг: 587
#9: 2007-12-27 20:04:26 ЛС | профиль | цитата
посмотри Convertor свойство Digits может там сабака порыта ;)...

[size=-2]------ Добавлено в 20:04
да на самом деле, если у тебя устройство стринги читает нафига ему тогда хексы?
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 5446
Рейтинг: 323
#10: 2007-12-27 20:21:12 ЛС | профиль | цитата
N0D, используй
Add(Stream2Hex,5766500,147,49)
{
Mode=3
}
карма: 1

0
Ответов: 9906
Рейтинг: 351
#11: 2007-12-27 20:26:15 ЛС | профиль | цитата
N0D писал(а):
чтобы то же самое ушло одной строкой и в HEX а не в STR

Дурдом на каникулах
карма: 9

0
Ответов: 26
Рейтинг: 0
#12: 2007-12-27 21:12:52 ЛС | профиль | цитата
ндаа... писатель из меня никудышний...
карма: 1

0
Ответов: 9906
Рейтинг: 351
#13: 2007-12-27 21:42:01 ЛС | профиль | цитата
Чтобы стать кудышным, надо начинать не квантовой физики, а с понимания БАЗЫ: что такое число, строка, символ, цифра, бит, и т.п..
И употреблять эти термины так же, как их понимают другие.
Если под одним и тем же словом каждый понимает чего хочешь, сей эпистолярный жанр полностью теряет смысл

Хорошое слово HEX
Только Вам же русским языком сказали, что это просто строка.
От себя добавлю, что состоящяя только из символов числом 16 (а вовсе не из 256), а именно из таких: 0123456789ABCDEF

Ясный перец, что Вы понимаете под этим что-то другое.
Что - достоверно неизвестно, только догадки. А экстрасенсы, наверное - в отпуске....

Вот и все секреты кудышности
карма: 9

0
Разработчик
Ответов: 26068
Рейтинг: 2121
#14: 2007-12-27 22:10:25 ЛС | профиль | цитата
Galkov писал(а):
Дурдом на каникулах
Вот с этим, я тоже согласен. У чела полная каша в голове с кодировками. Но экстрасенсом тут быть и не обязательно, чтобы понять, что ему надо передавать чисто бинарные данные, среди которых попадаются байты нулей. Байт 0 есть символ пустой строки, но несколько пустых сиволов подряд, сами понимаете, есть пустая строка. Если все это слить в одну последовательность, то эти символы исчезнут из общей строки. В таком случае необходимо передавать символы побайтово, один за одним, не превышая таймаута фрэйма и используя конвертор IntToChr. В результате отправки получится следующая последовательность символов --
е е е е е е е ' ' ' ' ' ' ' е е, где ' -- пустой символ.
карма: 22

0
Ответов: 26
Рейтинг: 0
#15: 2007-12-27 22:46:07 ЛС | профиль | цитата
СПАСИБО ОГРОМНОЕ iarspider !!! последний совет помог!
Выкладываю схему, может кому еще пригодится:

code_8048.txt




....
0.01375314 cod.exe IRP_MJ_WRITE Serial0 SUCCESS Length 16: ee.......eeeeeee
....



Всем спасибо за участие...
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)