Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];

Вниз

Чтение COM port под XP   Найти похожие ветки 

 
Сканер   (2007-03-22 09:38) [0]

ЧИтаю данные со сканера штрих кодов (CreateFile, ReadFile и пр.) На старом компе (win98) все здорово. Попробовал на новом (XP) - Get(Set)CommState,get(set)commtimeouts отрабатывают, а ReadFile пусто и всё. Куда копать?


 
Reindeer Moss Eater ©   (2007-03-22 09:41) [1]

getlasterror


 
Сканер   (2007-03-22 09:52) [2]

6


 
clickmaker ©   (2007-03-22 09:56) [3]

SysErrorMessage(GetLastError())
есть еще замечательная функция RaiseLastWin32Error, ну для любителей try except


 
Reindeer Moss Eater ©   (2007-03-22 09:59) [4]

6

Собственно вот тебе и ответ куда копать.


 
Kolan ©   (2007-03-22 10:07) [5]

> 6

Поток используешь? Что-то сним имхо, скореевсего он уже умер, а ты обращаешься&#133


 
Сканер   (2007-03-22 10:13) [6]

нет не потокб по таймеру читаю. считывания не часто случаются - всё без накладок работает в 98


 
Kolan ©   (2007-03-22 10:14) [7]

SysErrorMessage(GetLastError())
Вставь после каждого вызова API функции, погляди что получется.
Покажи код открытия порта и чтения&#133


 
Сканер   (2007-03-22 10:19) [8]

да всё по простому  
hCid:=CreateFile("\\.\COM1",GENERIC_READ,0,NIL,OPEN_EXISTING,FILE_ATTRIBUTE_NORM AL,0);
 SetupComm(hCid,256,256);

 GetCommState(hCid,dcb);
 dcb.BaudRate:=9599;
 dcb.ByteSize:=8;
 dcb.Parity:=NoParity;
 dcb.StopBits:=onestopbit;
 setcommstate(hcid,dcb);

 getcommtimeouts(hcid,timeouts);
 timeouts.ReadIntervalTimeout:=maxdword;
 timeouts.ReadTotalTimeoutMultiplier:=0;
 timeouts.ReadTotalTimeoutConstant:=0;
 timeouts.WriteTotalTimeoutMultiplier:=0;
 timeouts.WriteTotalTimeoutConstant:=0;
 setcommtimeouts(hcid,timeouts);

а потом

ReadFile(hCid,d,SizeOf(d),BytesRead,@ovr);

после создания
SysErrorMessage(GetLastError()) - операция успешно завершена
а READ говорит неверный дескриптор


 
tesseract ©   (2007-03-22 10:23) [9]


> ReadFile(hCid,d,SizeOf(d),BytesRead,@ovr);


Ты порт открываешь в синхронном режиме, а читаешь в асинхронном. Что же ты хочешь?


 
clickmaker ©   (2007-03-22 10:31) [10]


> hCid:=CreateFile("\\.\COM1"

замени на CreateFile("COM1"


 
wal ©   (2007-03-22 10:36) [11]

>[10] clickmaker ©   (22.03.07 10:31)
Зачем?


 
Сканер   (2007-03-22 10:38) [12]

2tesseract
 как читать в синхронном?
 с портами не работал - больше с БД:)
 скопировал из примера где-то и в 98 работает нормально
2clickmaker
про \\.\COM1" и "COM1" написано в статье на главной странице


 
Сканер   (2007-03-22 10:56) [13]

туплю:)
всё разобрался. респект всем за помошь


 
clickmaker ©   (2007-03-22 11:12) [14]


> [11] wal ©   (22.03.07 10:36)

To specify a COM port number greater than 9, use the following syntax: "\\\\.\\COM10".
(с) MSDN

но, в общем, не принципиально, согласен. Там видимо дело было в overlapped



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

Форум: "WinAPI";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.042 c
15-1186835172
Kolan
2007-08-11 16:26
2007.09.09
Как добавить установку драйвера в инстолятор?


2-1187001601
Quart
2007-08-13 14:40
2007.09.09
Blob


15-1186924736
апр
2007-08-12 17:18
2007.09.09
User Gate


15-1187075975
Vlad Oshin
2007-08-14 11:19
2007.09.09
Хочу быть директором :)


3-1179142779
DelphiLexx
2007-05-14 15:39
2007.09.09
DBGridEh проблемы перехода из режима редактирования





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский