Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не удается принять правильные данные из COM-порта / 5 сообщений из 5, страница 1 из 1
24.01.2005, 11:21:48
    #32879524
Junior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не удается принять правильные данные из COM-порта
Привет.
Есть задачка приема/передачи данных из COM-порта. Реализовал через WinAPI (ReadFile, WriteFile).
Но никак не могу побороть одну проблему: запускаю 2 экземпляра программы, одна на передачу, другая на прием - данные приходят кракозябрами.
Запускаю ГиперТерминалку + программу, из терминалки в программу все приходит правильно, в терминалку приходят кракозябры.
Думал, может кодировка не совпадает - нет, посылаю символы, которые и в досовской, и виндовой кодировке имеют одинаковые коды.
Думал, может биты четности или еще чего-нить надо самому добавлять - пробовал отсылать символы с 0 кодом - приходят не нули..
Поиск запускал - нет там ничего..
Пример на VB, скачанный из инета, работает...

Подскажите, чего делать...
...
Рейтинг: 0 / 0
24.01.2005, 11:41:22
    #32879585
Александр Спелицин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не удается принять правильные данные из COM-порта
Скачайте portmon c www.sysinternals.com и посмотрите, какие настройки порта делает терминалка и Ваша программа. Наверняка есть разница.
...
Рейтинг: 0 / 0
24.01.2005, 12:31:19
    #32879742
Junior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не удается принять правильные данные из COM-порта
Скачаю, спасибо,
но настройки портов я проверял, все совпадает
...
Рейтинг: 0 / 0
24.01.2005, 14:18:43
    #32880110
Junior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не удается принять правильные данные из COM-порта
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
0	0.00014108	HYPERTRM.EXE	IRP_MJ_CREATE	Serial0	SUCCESS	Options: Open 	
1	0.00002207	HYPERTRM.EXE	IOCTL_SERIAL_SET_QUEUE_SIZE	Serial0	SUCCESS	InSize: 8192 OutSize: 8192	
2	0.00000251	HYPERTRM.EXE	IOCTL_SERIAL_CONFIG_SIZE	Serial0	SUCCESS	Size: 0	
3	0.00000251	HYPERTRM.EXE	IOCTL_SERIAL_GET_BAUD_RATE	Serial0	SUCCESS		
4	0.00000251	HYPERTRM.EXE	IOCTL_SERIAL_GET_LINE_CONTROL	Serial0	SUCCESS		
5	0.00000223	HYPERTRM.EXE	IOCTL_SERIAL_GET_CHARS	Serial0	SUCCESS		
6	0.00000196	HYPERTRM.EXE	IOCTL_SERIAL_GET_HANDFLOW	Serial0	SUCCESS		
7	0.00000223	HYPERTRM.EXE	IOCTL_SERIAL_GET_BAUD_RATE	Serial0	SUCCESS		
8	0.00000168	HYPERTRM.EXE	IOCTL_SERIAL_GET_LINE_CONTROL	Serial0	SUCCESS		
9	0.00000140	HYPERTRM.EXE	IOCTL_SERIAL_GET_CHARS	Serial0	SUCCESS		
10	0.00000168	HYPERTRM.EXE	IOCTL_SERIAL_GET_HANDFLOW	Serial0	SUCCESS		
11	0.00001676	HYPERTRM.EXE	IOCTL_SERIAL_SET_BAUD_RATE	Serial0	SUCCESS	Rate: 9600	
12	0.00001117	HYPERTRM.EXE	IOCTL_SERIAL_SET_DTR	Serial0	SUCCESS		
13	0.00001034	HYPERTRM.EXE	IOCTL_SERIAL_SET_LINE_CONTROL	Serial0	SUCCESS	StopBits: 1 Parity: NONE WordLength: 8	
14	0.00000782	HYPERTRM.EXE	IOCTL_SERIAL_SET_CHAR	Serial0	SUCCESS	EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13	
15	0.00001090	HYPERTRM.EXE	IOCTL_SERIAL_SET_HANDFLOW	Serial0	SUCCESS	Shake:80000009 Replace:80000080 XonLimit:80 XoffLimit:200	
16	0.00000168	HYPERTRM.EXE	IOCTL_SERIAL_SET_TIMEOUTS	Serial0	SUCCESS	RI:10 RM:0 RC:0 WM:0 WC:5000	
17	0.00000978	HYPERTRM.EXE	IOCTL_SERIAL_SET_WAIT_MASK	Serial0	SUCCESS	Mask: RLSD ERR 	
18	7.44052498	HYPERTRM.EXE	IOCTL_SERIAL_WAIT_ON_MASK	Serial0	SUCCESS		
19	8.25985481	HYPERTRM.EXE	IRP_MJ_READ	Serial0	TIMEOUT	Length 9: $n.......	
20	0.00048693	MSACCESS.EXE	IRP_MJ_CREATE	Serial1	SUCCESS	Options: Open 	
21	2.59189227	HYPERTRM.EXE	IOCTL_SERIAL_WAIT_ON_MASK	Serial0	SUCCESS		
22	0.00000335	MSACCESS.EXE	IOCTL_SERIAL_SET_QUEUE_SIZE	Serial1	SUCCESS	InSize: 1024 OutSize: 1024	
23	0.00000279	MSACCESS.EXE	IOCTL_SERIAL_SET_TIMEOUTS	Serial1	SUCCESS	RI:-1 RM:0 RC:0 WM:0 WC:0	
24	0.00000475	MSACCESS.EXE	IOCTL_SERIAL_GET_BAUD_RATE	Serial1	SUCCESS		
25	0.00000251	MSACCESS.EXE	IOCTL_SERIAL_GET_LINE_CONTROL	Serial1	SUCCESS		
26	0.00000168	MSACCESS.EXE	IOCTL_SERIAL_GET_CHARS	Serial1	SUCCESS		
27	0.00000196	MSACCESS.EXE	IOCTL_SERIAL_GET_HANDFLOW	Serial1	SUCCESS		
28	0.00001732	MSACCESS.EXE	IOCTL_SERIAL_SET_BAUD_RATE	Serial1	SUCCESS	Rate: 9600	
29	0.00001173	MSACCESS.EXE	IOCTL_SERIAL_SET_RTS	Serial1	SUCCESS		
30	0.00001117	MSACCESS.EXE	IOCTL_SERIAL_SET_DTR	Serial1	SUCCESS		
31	0.00001034	MSACCESS.EXE	IOCTL_SERIAL_SET_LINE_CONTROL	Serial1	SUCCESS	StopBits: 1 Parity: NONE WordLength: 8	
32	0.00000782	MSACCESS.EXE	IOCTL_SERIAL_SET_CHAR	Serial1	SUCCESS	EOF:0 ERR:0 BRK:0 EVT:0 XON:0 XOFF:0	
33	0.00001257	MSACCESS.EXE	IOCTL_SERIAL_SET_HANDFLOW	Serial1	SUCCESS	Shake:1 Replace:40 XonLimit:0 XoffLimit:0	

Здесь видно, что отличаются строки 1-22, 14-32 и 15-33
Управление потоком везде стоит аппаратное, причем тут Xon/Xoff? Сейчас сам еще поищу..
...
Рейтинг: 0 / 0
25.01.2005, 09:26:42
    #32881496
Александр Спелицин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не удается принять правильные данные из COM-порта
Вдогонку.
В примерах к MSDN есть пример реализации терминальной программы. Ищите файлы tty.c & tty.h
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не удается принять правильные данные из COM-порта / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]