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

Вниз

Работа с Com-портом, помогите пожалуйста !!!   Найти похожие ветки 

 
Twilight   (2002-01-03 09:27) [0]

TComPort
Ждем сигнал в COM порт, если его нет, значит неверно выбран номер порта, или устройство не подключено, или еще какой сбой. Как в этом случае отменить чтение, вернуть функцию, чтобы программа не висла.
function TComPort.WaitForAsync(var AsyncPtr: PAsync): DWORD;
var
BytesTrans, Signaled: DWORD;
Success: Boolean;
begin
if AsyncPtr = nil then
raise EComPort.CreateNoWinCode(CError_InvalidAsync);

with AsyncPtr^ do begin
Signaled := WaitForSingleObject(Overlapped.hEvent, INFINITE);
Success := (Signaled = WAIT_OBJECT_0) and
(GetOverlappedResult(FHandle, Overlapped, BytesTrans, False));
end;

if not Success then
raise EComPort.Create(ErrorCode(AsyncPtr), GetLastError);

Result := BytesTrans;

end;


В данном случае она зацикливается на строке
Signaled := WaitForSingleObject(Overlapped.hEvent, INFINITE);
Ставил вместо INFINITE определенное число миллисекунд -224 и:

if not Success then begin
halt;
end;

В этом случае при сбоях она завершала выполнение программы и не висла, но получается так что каждый раз интервал в миллисекундах разный и для чтения и для записи. Поставлю время меньше, он при чтении завершает, поставлю больше при записи виснит.
И в общем все время указывает на эту строку:
Signaled := WaitForSingleObject(Overlapped.hEvent, INFINITE);
Подскажите пожалуйста, что делать.Ситуация то какая: у меня в микросхему если я хочу читать из нее посылается байт $55, на что микросхема выдает сначала байт $33 , а потом еще 223 байта с данными.
Когда надо ввести в микросхему, тут сложнее - у микросхемы не хватает ОЗУ чтобы сразу все принять, поэтому приходится разбивать массив байтов на пачки в определенном порядке и количестве и используются разные инициализирующие байты - $60 и $40, причем для каждой пачки повторяется процедура - засылается первый байт, потом информация и микросхема выдает байт $33.
Вот я никак не разберусь че же делать то.



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

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

Наверх





Память: 0.44 MB
Время: 0.004 c
3-19044
HDD
2002-02-07 15:50
2002.03.07
Помогите пожалуйста дамы и господа


14-19305
Свой
2002-01-17 23:40
2002.03.07
Действия эксплорера


1-19137
Андре
2002-02-20 12:32
2002.03.07
TDBRichEdit


14-19334
VuDZ
2002-01-22 02:28
2002.03.07
За или против наСильников?


1-19261
Андрей Сенченко
2002-02-11 10:27
2002.03.07
Теория и практика работы с ресурсами.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский