eXeL@B —› Программирование —› Работа с COM портом.... |
Посл.ответ | Сообщение |
|
Создано: 18 мая 2007 21:32 · Личное сообщение · #1 Всем привет! У меня есть прибор по измерению вибрации. В результате проведения измерений в памяти этого прибора создаются файлы с нужными мне данными... Есть программа, которая прилагалась к этому прибору, она же считывает данные с прибора. Мне хочется другую программу, с большими возможностями (не только считывание данных). Вот оригинал программы: www.progiseregi.narod.ru/other/link_6400_Orig.rar А это проект который получился в Dede: www.progiseregi.narod.ru/other/link_6400_Delphi.rar Пытался промониторить COM порт прогой PortMon. www.progiseregi.narod.ru/other/File.rar в этом архиве собраны результаты моих наблюдений. В архиве есть файлы: 1Вspt.txt - файл полученный после считывания данных как СИМВОЛОВ SPT.LOG - наблюдения PortMon 1Вbin.txt - файл полученный после считывания данных как БИНАРНЫЕ BIN.LOG - наблюдения PortMon Никак не могу понять как формируются файлы 1Вspt.txt и 1Вbin.txt. Может поможете кто чем сможет? Или направте на путь истинный! Буду очень благодарен! |
|
Создано: 18 мая 2007 23:10 · Личное сообщение · #2 |
|
Создано: 19 мая 2007 00:50 · Личное сообщение · #3 |
|
Создано: 21 мая 2007 22:02 · Личное сообщение · #4 |
|
Создано: 22 мая 2007 11:23 · Личное сообщение · #5 Загрузил, немного посмотрел. Вот к примеру: FILE: 1Вbin.txt 00000090: 9A 19 08 DE 8A 27 45 40 87 87 06 96 DF 78 3D 40 000000A0: 9A 99 4D 69 AF B8 3A 40 C4 C3 48 56 94 4D 34 40 000000B0: 5D 5D 80 92 B1 C1 28 40 81 81 0E 39 51 41 23 40 000000C0: 8D 8D E8 C5 DB 6B 21 40 DC DB FC 6F A9 A2 20 40 000000D0: FD FC 24 15 14 4B 1C 40 C4 C3 D3 6C DD 6F 0F 40 ... Сразу бросаецца в глаза что это double-числа (8 bytes each): 9A 19 08 DE 8A 27 45 40 87 87 06 96 DF 78 3D 40 9A 99 4D 69 AF B8 3A 40 C4 C3 48 56 94 4D 34 40 ... Переводим эти числа в double и выводим: BYTE test[8]= {0x87, 0x87, 0x06, 0x96, 0xDF, 0x78, 0x3D, 0x40}; printf("\nDouble=[%f]", *((double *)&test)); return; И получаем: 9A 19 08 DE 8A 27 45 40 - 42.308925 87 87 06 96 DF 78 3D 40 - 29.472162 9A 99 4D 69 AF B8 3A 40 - 26.721427 C4 C3 48 56 94 4D 34 40 - 20.303045 ... А что у нас есть в файлике "1Вspt.txt "? А фот что: 14 0.814 Гц 42.3089 мкм 15 0.876 Гц 29.4722 мкм 16 0.939 Гц 26.7214 мкм 17 1.002 Гц 20.3030 мкм Вроде вот так... ----- The one derivative you manage is the one I abhore (c) Slipknot |
|
Создано: 22 мая 2007 20:06 · Личное сообщение · #6 |
|
Создано: 22 мая 2007 20:29 · Личное сообщение · #7 |
|
Создано: 23 мая 2007 09:36 · Личное сообщение · #8 |
|
Создано: 24 мая 2007 08:21 · Личное сообщение · #9 |
|
Создано: 25 мая 2007 00:14 · Личное сообщение · #10 ser_ega, вообщем вот аттач там в архиве три примера по-ходу, ну я демаю разберёшся f819_24.05.2007_CRACKLAB.rU.tgz - работа с портами.rar |
|
Создано: 25 мая 2007 00:15 · Личное сообщение · #11 |
|
Создано: 30 мая 2007 19:30 · Личное сообщение · #12 AlexVel пишет: Найди в инете прогу Com Port ToolKit - инсталляк чуть больше мегабайта (там 30-ти дневный пробный период, которого тебе за глаза хватит) сними ей обмен и выложи сюда Сделал как ты сказал. См. аттач. Там файл который создал Com Port ToolKit и то что получилось в результате считывания данных с прибора в символьном виде. 91c0_30.05.2007_CRACKLAB.rU.tgz - Test.rar |
|
Создано: 30 мая 2007 20:20 · Личное сообщение · #13 |
|
Создано: 30 мая 2007 21:20 · Личное сообщение · #14 Сначала идет некая инициализация. Потом методично считываются результаты измерений. Подзапросы по получению данных результатов измерений состоят из байтовой комбинации: 4D 08 00 XX YY ZZ 00 похоже что WORD 0xYYXX - некий адрес ячейки, а следующий WORD 0x00ZZ- длина данных (Обычно 0x0010, хотя редко встречаются и др.) Исходя из длины видно, что при запросах адрес увеличивается как раз на длину. (т.е. постоянное прибавление к адресу ячейки длины данных) Адрес ячейки изменяется от 0x0000 до 0x649E причем запросы могут состоять из нескольких таких "подзапросов" (из 1-го,2-х,3-х и 4-х шт) Очень странно, что длина ответа не зависит от количества "подзапросов" (было-бы логичным, если бы зависела) Длина ответа либо 0x11,либо 0x22, либо 0x33, либо 0x44 байта Предположительно блоки по 0x10 значащих байт (может по 2 DOUBLE числа) + байт 0x2F Складывается такое впечатление, что на кол-во подзапросов в запросе влияет предыдущий ответ. Т.е. кол-во подзапросов=length(пред. ответа)/0x11 Все идет логично (считывание адресов 0x0000..0x1920) до такого места: от устройства приходит пакет "нестандартной" длины (0x10+1)*2+0x0A+1 (790-й пакет) следовательно следующим запросом к устройству идет пакет (793-й) с ДЛИНОЙ 0x000A !!! Ну и следом идет некая инициализация очередного банка памяти или что-то еще и снова начинается методичный опрос с адреса 0x193A...0x324A ... |
|
Создано: 31 мая 2007 22:00 · Личное сообщение · #15 |
|
Создано: 01 июня 2007 20:16 · Личное сообщение · #16 Вот исправляюсь! В папке "считаны" файлы с расширением *.Bin получются если считывать в бинарной форме, а *.sp2 - в символьном виде.... 85e1_01.06.2007_CRACKLAB.rU.tgz - Test.rar |
|
Создано: 04 июня 2007 20:25 · Личное сообщение · #17 |
eXeL@B —› Программирование —› Работа с COM портом.... |