Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.27;
Скачать: CL | DM;

Вниз

Прибор через COM порт...   Найти похожие ветки 

 
serko ©   (2007-01-23 22:31) [0]

Всем привет!
У меня есть прибор по измерению вибрации. В результате проведения измерений в памяти этого прибора создаются файлы с нужными мне данными...
Есть программа, которая прилагалась к этому прибору, она же считывает данные с прибора.
Мне хочется другую программу, с большими возможностями (не только считывание данных).
Как произвести считывание данных с прибора через COM порт?
Где можна изучить этот вопрос?


 
Сергей М. ©   (2007-01-24 09:14) [1]


> Как произвести считывание данных с прибора через COM порт?
>
> Где можна изучить этот вопрос?
>


Для начала изучить документацию производителя прибора в части протокола инф.обмена с этим прибором.


 
tesseract ©   (2007-01-24 11:13) [2]

Павел Агуров "программирование последовательных интерфейсов ПК" Практическое руковводство.


 
serko ©   (2007-01-24 22:46) [3]


> Для начала изучить документацию производителя прибора в
> части протокола инф.обмена с этим прибором.

Изучать нечего, нет ничего по этому поводу в документации... Видимо считают, что такая инфа не распространяется...


> Павел Агуров "программирование последовательных интерфейсов
> ПК" Практическое руковводство.

Книжечка? надо бы посотреть.... для начала найти бы ее...


 
medved_68 ©   (2007-01-25 09:32) [4]


> Книжечка? надо бы посотреть.... для начала найти бы ее..
> .

Нет проблем :)))http://www.natahaus.ru/2005/09/08/posledovatelnye_interfeysy_pk_.html

> Есть программа, которая прилагалась к этому прибору, она
> же считывает данные с прибора.

serko Ты возможно не поверишь, но этого, вкупе с девайсом, более чем достаточно для анализа протокола. :)))


 
Сергей М. ©   (2007-01-25 10:19) [5]


> Изучать нечего, нет ничего по этому поводу в документации


Тогда начни с анализа передаваемых/принимаемых данных с целью выяснения подробностей этого "секретного" протокола, возможно он достаточно прост и тебе повезет. Для перехвата ввода/вывода воспользуйся любой удобной готовой шпионской утилиткой (коих в Тырнете навалом), мониторящей СОМ-порты.

Ранее чем ты проделаешь эту работу переходить к вопросу о разработке собственного приложения попросту бессмысленно.


 
serko ©   (2007-01-26 21:50) [6]


> medved_68 ©   (25.01.07 09:32) [4]


Спасибо тебе за ссылочку. Теперь займусь изучением книжечки.

Скажите а какие это ПОДРОБНОСТИ нужно узнать у протокола?


 
serko ©   (2007-01-28 19:00) [7]

А книжечка действительно прикольная!
В ней есть ссылки на диск который должен прилагаться с этой книжкой. Можна ли где-то его скачать?


 
medved_68 ©   (2007-01-29 10:21) [8]


> Скажите а какие это ПОДРОБНОСТИ нужно узнать у протокола?

serko каждый прибор имеет ему одному и программе обслуживающей его изыестный протокол. Например начиная со скорости передачи и до всякой "фигни" по типу такого:
Baud rate 9600 bps, 8 bits, none parity

FORMAT of MESSAGE:

        |marker : 0xAA - 1 byte|
        |machine number ASCII ("nnnnnn")- 6 bytes|
        |command - 1byte ("a".."z")|
        |INFORMATION with var lenght in range 0x20 .. 0x8F|
        |2 bytes crc:  arithmetic sum, including marker, 1 byte :
                      0xHL, confirm to 2 bytes ASCII: 0x3H, 0x3L|
        |LF : 0x0A|
Здесь, например, (из мануала идущего с прибором) четко сказано что скорость передачи такая то, дано описание формата передачи (т.е. что за чем в какой последовательности байт следует), и т.д. Если у тебя такого мануала к прибору нет, то для работы с ним без использования стандартной (идущей с ним в комплекте) программы тебе необходимо разобраться сначала как сказал Сергей М.
> Тогда начни с анализа передаваемых/принимаемых данных с
> целью выяснения подробностей этого "секретного" протокола,
>

и уяснив для себя как им управлять и обрабатывать то, что он передает - можно приступить к написанию своей оболочки под этот девайс. :)))


 
serko ©   (2007-01-29 22:31) [9]

А вообще можна ли нанести какой то вред прибору (из-за моей не опытности бывает всякое) при общении с ним через СОМ порт? Имеется ввиду только считывание инфы с прибора...
А прибор то дорогой 7000 баксов весит...


 
medved_68 ©   (2007-01-30 09:05) [10]


> А вообще можна ли нанести какой то вред прибору (из-за моей
> не опытности бывает всякое) при общении с ним через СОМ
> порт?

serko Ну для этого надо очень сильно постараться. Например угадать команды протокола + их последовательность для перепрошива внутреннего ЕЕПРОМ прибора. Обычно хорошие приборы от такой бяки залочены и кроме как программатором с полным стиранием памяти их не возьмешь. Поэтому не стоит тревожиться, в лучшем случае поймаешь какой-нибудь ответ, в худшем - тишина. :))) Максимум - если неправильное подключение к КОМ могут выхода сгореть, но судя по цене прибор должен быть укомплектован под "самые помидоры" кабелем для коннекта с компом. :)))
З.Ы. При такой стоимости и отсутствие мануала......


 
serko ©   (2007-01-30 20:05) [11]


> З.Ы. При такой стоимости и отсутствие мануала......

Это ты правильно подметил! я сам удивляюсь... И главное на мои запросы они не отвечают...
Нашел в инструкции только то, что  ШТЕКЕРА RS-232. И ничего более подходящего...
Ну чтож будем копать....

А прилагающаяся программа самая примитивная - имеет 3 кнопки подключиться, считать данные и отключиться... Видно что на делфи делали...(а может я и ошибаюсь...)


 
serko ©   (2007-01-30 22:26) [12]

Могу с уверенность сказать шо эта прога сделана в Delphi...

Открыл я этот файлик с помощью проги Dede, которая пытается востанавливать код проекта... (на асемблере получается, в нем я совсем не шарю)
Так вот с ее помощью я узнал что:
Comport.BauldRate:=br115200
ComPort.Parity.Bits:=prEven


 
medved_68 ©   (2007-01-31 14:44) [13]


> Нашел в инструкции только то, что  ШТЕКЕРА RS-232. И ничего
> более подходящего...
> Ну чтож будем копать....

serko Это говорит о том что распиновка разъема - стандартная. :))
> Comport.BauldRate:=br115200
> ComPort.Parity.Bits:=prEven

Ну вот и скорость с паритетом стали известны!!! В самый раз накропать программку прослойку и поглядеть на протокол "изнутри". :)))


 
serko ©   (2007-01-31 22:13) [14]

Нашел прогу которую рекомендуют в той книге (PortMon)
Запустил я свою прогу нажал подключиться к прибору и скачать данные в символьном виде (есть еще кнопка скачать в двоичном виде), и вот что мне выдал PortMon:


0 0.00005950 link_bca6400.ex IRP_MJ_CREATE Serial1 SUCCESS Options: Open  
1 0.00000363 link_bca6400.ex IOCTL_SERIAL_GET_BAUD_RATE Serial1 SUCCESS  
2 0.00000251 link_bca6400.ex IOCTL_SERIAL_GET_LINE_CONTROL Serial1 SUCCESS  
3 0.00000223 link_bca6400.ex IOCTL_SERIAL_GET_CHARS Serial1 SUCCESS  
4 0.00000251 link_bca6400.ex IOCTL_SERIAL_GET_HANDFLOW Serial1 SUCCESS  
5 0.00001034 link_bca6400.ex IOCTL_SERIAL_SET_BAUD_RATE Serial1 SUCCESS Rate: 115200
6 0.00000587 link_bca6400.ex IOCTL_SERIAL_CLR_RTS Serial1 SUCCESS  
7 0.00000587 link_bca6400.ex IOCTL_SERIAL_CLR_DTR Serial1 SUCCESS  
8 0.00000419 link_bca6400.ex IOCTL_SERIAL_SET_LINE_CONTROL Serial1 SUCCESS StopBits: ERROR Parity: EVEN WordLength: 8
9 0.00000251 link_bca6400.ex IOCTL_SERIAL_SET_CHAR Serial1 SUCCESS EOF:0 ERR:c0 BRK:c0 EVT:0 XON:11 XOFF:13
10 0.00000419 link_bca6400.ex IOCTL_SERIAL_SET_HANDFLOW Serial1 SUCCESS Shake:0 Replace:0 XonLimit:256 XoffLimit:256
11 0.00000251 link_bca6400.ex IOCTL_SERIAL_SET_TIMEOUTS Serial1 SUCCESS RI:100 RM:5 RC:1000 WM:100 WC:1000
12 0.00000223 link_bca6400.ex IOCTL_SERIAL_SET_QUEUE_SIZE Serial1 SUCCESS InSize: 1024 OutSize: 8096
13 0.00000810 link_bca6400.ex IOCTL_SERIAL_SET_WAIT_MASK Serial1 SUCCESS Mask: RXCHAR TXEMPTY RX80FULL  
14 0.00000307 link_bca6400.ex IOCTL_SERIAL_PURGE Serial1 SUCCESS Purge: TXCLEAR RXCLEAR
15 0.00002235 link_bca6400.ex IRP_MJ_WRITE Serial1 SUCCESS Length 1: H
16 0.00509702 link_bca6400.ex IRP_MJ_READ Serial1 SUCCESS Length 48: ...)........................`...................
17 0.00000810 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
18 0.00001145 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
19 0.00000782 link_bca6400.ex IOCTL_SERIAL_PURGE Serial1 SUCCESS Purge: TXCLEAR RXCLEAR
20 3.41533072 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
21 0.00007236 link_bca6400.ex IRP_MJ_WRITE Serial1 SUCCESS Length 7: A.p....
22 0.00141694 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
23 0.00002850 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
24 5.04327980 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
25 0.00001090 link_bca6400.ex IRP_MJ_READ Serial1 SUCCESS Length 13: P....6...././
26 0.00003743 link_bca6400.ex IRP_MJ_WRITE Serial1 SUCCESS Length 7: A.p....
27 0.00153846 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
28 0.00288389 link_bca6400.ex IRP_MJ_READ Serial1 SUCCESS Length 17: ......*..".0..../
29 0.00002486 link_bca6400.ex IRP_MJ_WRITE Serial1 SUCCESS Length 7: A.p....
30 0.00000363 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
31 0.00295512 link_bca6400.ex IRP_MJ_READ Serial1 SUCCESS Length 17: ...._2 .14    .A/
32 0.00002319 link_bca6400.ex IRP_MJ_WRITE Serial1 SUCCESS Length 7: A.p....
33 0.00000363 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
34 0.00144069 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
35 0.00143705 link_bca6400.ex IRP_MJ_READ Serial1 SUCCESS Length 3: Q./
36 0.00004163 link_bca6400.ex IRP_MJ_WRITE Serial1 SUCCESS Length 7: M......
37 0.00298418 link_bca6400.ex IRP_MJ_READ Serial1 SUCCESS Length 17: ....@..$......6./
38 0.00000670 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
39 0.00002598 link_bca6400.ex IRP_MJ_WRITE Serial1 SUCCESS Length 7: M......
40 0.00301351 link_bca6400.ex IRP_MJ_READ Serial1 SUCCESS Length 17: ;.^.......\...Y./
41 0.00000419 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
42 0.00002347 link_bca6400.ex IRP_MJ_WRITE Serial1 SUCCESS Length 7: M.. ...
43 0.00303083 link_bca6400.ex IRP_MJ_READ Serial1 SUCCESS Length 17: ..D............./
44 0.00000363 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
45 0.00002319 link_bca6400.ex IRP_MJ_WRITE Serial1 SUCCESS Length 7: M..0...
46 0.00302245 link_bca6400.ex IRP_MJ_READ Serial1 SUCCESS Length 17: ................/
47 0.00000335 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
48 0.00002291 link_bca6400.ex IRP_MJ_WRITE Serial1 SUCCESS Length 7: M..@...
49 0.00302385 link_bca6400.ex IRP_MJ_READ Serial1 SUCCESS Length 17: ................/
50 0.00000335 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
51 0.00002347 link_bca6400.ex IRP_MJ_WRITE Serial1 SUCCESS Length 7: M..P...
52 0.00302776 link_bca6400.ex IRP_MJ_READ Serial1 SUCCESS Length 17: ................/

и т.д. ......................................


 
Сергей М. ©   (2007-02-01 08:51) [15]


> есть еще кнопка скачать в двоичном виде


Судя по логу именно ее и надо было нажимать


 
medved_68 ©   (2007-02-01 12:13) [16]

serko обрати внимание на первоначальную настройку порта. Линия RTS (есть такое ощущение) поднимается в +12 только когда идет передача с компа на девайс. :)))


 
tesseract ©   (2007-02-01 18:07) [17]


> medved_68 ©   (01.02.07 12:13) [16]


Т.е девайс с контролем потока или программисты накатали случайный код.


 
medved_68 ©   (2007-02-01 20:03) [18]


> Т.е девайс с контролем потока или программисты накатали
> случайный код.

Судя по логу контроль есть. :))) Причем RTS_CONTROL_TOGGLE (ИМХО), могу и ошибаться, впрочем проверяется элементарно. :)))


 
serko ©   (2007-02-01 22:19) [19]


> Судя по логу именно ее и надо было нажимать


Данные должны считываться при нажатии на ЛЮБУЮ кнопку....

я вот выложил ПРОЕКТ который сделал с помощью DEDE:
www.progiseregi.narod.ru/other/link_bca6400.rar

А вот еще однинаблюдения с помощью PortMon:

2 0.00005783 link_bca6400.ex IRP_MJ_CREATE Serial1 SUCCESS Options: Open  
3 0.00000363 link_bca6400.ex IOCTL_SERIAL_GET_BAUD_RATE Serial1 SUCCESS  
4 0.00000251 link_bca6400.ex IOCTL_SERIAL_GET_LINE_CONTROL Serial1 SUCCESS  
5 0.00000251 link_bca6400.ex IOCTL_SERIAL_GET_CHARS Serial1 SUCCESS  
6 0.00000251 link_bca6400.ex IOCTL_SERIAL_GET_HANDFLOW Serial1 SUCCESS  
7 0.00001034 link_bca6400.ex IOCTL_SERIAL_SET_BAUD_RATE Serial1 SUCCESS Rate: 115200
8 0.00000559 link_bca6400.ex IOCTL_SERIAL_CLR_RTS Serial1 SUCCESS  
9 0.00000559 link_bca6400.ex IOCTL_SERIAL_CLR_DTR Serial1 SUCCESS  
10 0.00000419 link_bca6400.ex IOCTL_SERIAL_SET_LINE_CONTROL Serial1 SUCCESS StopBits: ERROR Parity: EVEN WordLength: 8
11 0.00000251 link_bca6400.ex IOCTL_SERIAL_SET_CHAR Serial1 SUCCESS EOF:0 ERR:c0 BRK:c0 EVT:0 XON:11 XOFF:13
12 0.00000419 link_bca6400.ex IOCTL_SERIAL_SET_HANDFLOW Serial1 SUCCESS Shake:0 Replace:0 XonLimit:256 XoffLimit:256
13 0.00000251 link_bca6400.ex IOCTL_SERIAL_SET_TIMEOUTS Serial1 SUCCESS RI:100 RM:5 RC:1000 WM:100 WC:1000
14 0.00000223 link_bca6400.ex IOCTL_SERIAL_SET_QUEUE_SIZE Serial1 SUCCESS InSize: 1024 OutSize: 8096
15 0.00000726 link_bca6400.ex IOCTL_SERIAL_SET_WAIT_MASK Serial1 SUCCESS Mask: RXCHAR TXEMPTY RX80FULL  
16 0.00000307 link_bca6400.ex IOCTL_SERIAL_PURGE Serial1 SUCCESS Purge: TXCLEAR RXCLEAR
17 0.00002291 link_bca6400.ex IRP_MJ_WRITE Serial1 SUCCESS Length 1: H
18 0.00511154 link_bca6400.ex IRP_MJ_READ Serial1 SUCCESS Length 48: .....<......r................M...............G..
19 0.00000754 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
20 0.00001062 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
21 0.00000838 link_bca6400.ex IOCTL_SERIAL_PURGE Serial1 SUCCESS Purge: TXCLEAR RXCLEAR
22 13.45164539 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
СОЕДИНЕНИЕ С ПРИБОРОМ

23 0.00006649 link_bca6400.ex IRP_MJ_WRITE Serial1 SUCCESS Length 7: A.p....
24 0.00141219 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
25 0.00002850 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
26 18.12356347 link_bca6400.ex IOCTL_SERIAL_WAIT_ON_MASK Serial1 SUCCESS  
Попытка скачать данные с прибора. Выдает сообщение "ДИСК ПУСТОЙ"

27 0.00001034 link_bca6400.ex IRP_MJ_READ Serial1 SUCCESS Length 13: ...... ...(./
28 0.00002738 link_bca6400.ex IRP_MJ_WRITE Serial1 SUCCESS Length 1: G
29 0.00000503 link_bca6400.ex IOCTL_SERIAL_PURGE Serial1 SUCCESS Purge: TXABORT RXABORT  
30 0.00000335 link_bca6400.ex IOCTL_SERIAL_PURGE Serial1 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR
31 0.00000643 link_bca6400.ex IRP_MJ_CLEANUP Serial1 SUCCESS  
32 0.00163512 link_bca6400.ex IRP_MJ_CLOSE Serial1 SUCCESS  
ВЫХОД ИЗ ПРОГРАММЫ


Завтра если получится сделаю так чтобы на приборе был один файл, чтобы было видно где начинается считывание файла и где оно закагчивается...
Я в этих наблюдениях не вижу данных которые в результате получаются в файле... Какие-то точки с буквами.... :-(


 
medved_68 ©   (2007-02-02 08:17) [20]


> Я в этих наблюдениях не вижу данных которые в результате
> получаются в файле... Какие-то точки с буквами.... :-(

Так возможно это и есть данные, только то что ты видишь - пропущено через знакогенератор. :)))
serko а кто выступает инициатором диалога - комп или девайс??? Есть ли режим ОНЛАЙН???Типа данные поступают сразу на комп без оседания в памяти девайса.


 
serko ©   (2007-02-02 22:37) [21]


> Так возможно это и есть данные, только то что ты видишь
> - пропущено через знакогенератор. :)))

Не понятно мне как этот генератор практически из одних точек может СДЕЛАТЬ текст, и причем количество точек в каждом принятом пакете практически везде одинаково! Логики пока не заметил...
Я вот создал что что обещал....
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 - одни крокозяблики!


> а кто выступает инициатором диалога - комп или девайс???

в приборе есть пункт "ПЭВМ", при клике на который пишет сообщение типа "Запустите программу **** и считывайте данные". Я запускаю это прогу соединяюсь с прибором и читаю...


> Есть ли режим ОНЛАЙН???Типа данные поступают сразу на комп
> без оседания в памяти девайса.

Такого режима нет...


 
serko ©   (2007-05-18 22:43) [22]

Ну что никаких идей больше нет?


 
medved_68 ©   (2007-05-21 14:50) [23]

serko а каие еще тебе идеи нужны???? Вроде перетерли все варианты и даже схему исследований накидали. :)))



Страницы: 1 вся ветка

Текущий архив: 2008.04.27;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.017 c
15-1203519350
Marser
2008-02-20 17:55
2008.04.27
USB Flash-based дистрибутив Linux


2-1206983442
Ньюб
2008-03-31 21:10
2008.04.27
Имитация нажатия клавиши enter


15-1205317206
^-k2-^
2008-03-12 13:20
2008.04.27
Авторское право.


8-1178878045
VoKram
2007-05-11 14:07
2008.04.27
PostScript -> EMF


15-1205543744
No_Dead
2008-03-15 04:15
2008.04.27
Не пойму что с инэтом