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

Вниз

COM - порт. Тестирование.   Найти похожие ветки 

 
dosik   (2004-07-31 23:48) [0]

Добрый день, господа программеры. Суть задачи такова. На com порте стоит заглушка, т.е. получается обыкновенное эхо. Почему же это тогда не работает???

var
 hPort : THandle;
 rand  : array[1..1] of byte;
 Size  : DWORD;
 over  : TOverlapped;
begin
 if lvPorts.ItemIndex>-1 then
 begin
   hPort:=CreateFile(PChar(lvPorts.Items[lvPorts.ItemIndex]),GENERIC_READ and GENERIC_WRITE,0,
                     nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED,0);
   if Succeeded(hPort) then
   begin
     Randomize;
     rand[1]:=Random(100);
     Size:=1;
     if WriteFile(hPort,rand,Size,Size,@over) then
       ShowMessage("yes")
     else
       ShowMessage(IntToStr(GetLastError));
     if ReadFile(hPort,rand,1,Size,@over) then
       ShowMessage("yes");
     else
       ShowMessage(IntToStr(GetLastError));
     CloseHandle(hPort);
   end;
 end;
И там и там ошибка 5 (отказ в доступе) :(


 
tesseract   (2004-08-01 14:40) [1]

А зачем Overlapped если не используещь Wait? и что за Succeeded(hPort) ? типа на больше ноля проверяет? и зачем randomize? а SetCommState где? поставь пораметры порта и сбрось PurgeCom. У тебя заглушка 2-3? а DTR/DSR, CTS/RTS?  Ну и главное  PChar(lvPorts.Items[lvPorts.ItemIndex]) - так делать в 6-7 не рекомендуется - сделай pcharPort= Pchar(stringPort)


 
dosik   (2004-08-01 23:10) [2]

Вот, так, только не работает все равно:
   hPort:=CreateFile(PChar(lvPorts.Items[lvPorts.ItemIndex]),GENERIC_READ and GENERIC_WRITE,0,
                     nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED,0);
   if Succeeded(hPort) then
   begin
     if SetupComm(hPort,SizeOf(DWORD),SizeOf(DWORD)) then
       ShowMessage("Setup")
     else
       ShowMessage("ERROR SETUP : "+IntToStr(GetLastError));

     if GetCommState(hPort,PortDCB) then
       ShowMessage("Get DCB")
     else
       ShowMessage("ERROR GET DCB : "+IntToStr(GetLastError));
     PortDCB.BaudRate:=CBR_9600;
     PortDCB.Parity:=1;
     PortDCB.ByteSize:=5;
     PortDCB.StopBits:=ONESTOPBIT;
     if SetCommState(hPort,PortDCB) then
       ShowMessage("Set DCB")
     else
       ShowMessage("ERROR SET DCB : "+IntToStr(GetLastError));

     if GetCommTimeouts(hPort,PortTime) then
       ShowMessage("Get COMTimeouts")
     else
       ShowMessage("ERROR GET COMTimeouts : "+IntToStr(GetLastError));
     PortTime.ReadTotalTimeoutConstant:=50;
     PortTime.ReadIntervalTimeout:=MAXDWORD;
     PortTime.ReadTotalTimeoutMultiplier:=MAXDWORD;
     PortTime.WriteTotalTimeoutMultiplier:=1000;
     PortTime.WriteTotalTimeoutConstant:=1500;
     if SetCommTimeouts(hPort,PortTime) then
       ShowMessage("Set COMTimeouts")
     else
       ShowMessage("ERROR SET COMTimeouts : "+IntToStr(GetLastError));

     Randomize;
     for i:=1 to 10 do
       rand[i]:=Random(65535);
     Size:=10;
     if WriteFile(hPort,rand,Size,Size,@over) then
       ShowMessage("WRITE : "+IntToStr(Rand[1]))
     else
       ShowMessage("ERROR WRITE : "+IntToStr(GetLastError));
       
     if ReadFile(hPort,rand,Size,Size,@over) then
       ShowMessage("READ : "+IntToStr(Rand[1]))
     else
       ShowMessage("ERROR READ : "+IntToStr(GetLastError));
     CloseHandle(hPort);
   end;
??? Может кто кинет ссылку как правильно это делается и что означают параметры. Только желательно на русском. )))


 
dosik   (2004-08-02 00:22) [3]

Отвечаю сам себе:
не GENERIC_READ and GENERIC_WRITE а GENERIC_READ or GENERIC_WRITE. Как я это упустил??? )))



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

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

Наверх





Память: 0.46 MB
Время: 0.038 c
14-1093269258
antonn
2004-08-23 17:54
2004.09.12
Программулина...


1-1093638711
ИМХО
2004-08-28 00:31
2004.09.12
CLSIDFromProgID и Аутлук


14-1093326200
Kerk
2004-08-24 09:43
2004.09.12
Безграмотные программисты Microsoft....


14-1093464569
NailMan
2004-08-26 00:09
2004.09.12
Генератор имен


3-1092380347
REA
2004-08-13 10:59
2004.09.12
TIBTable и TIBDataSet





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