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

Вниз

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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.039 c
3-1092729499
dolmat
2004-08-17 11:58
2004.09.12
Месяц и год


1-1093847794
ВАП
2004-08-30 10:36
2004.09.12
Общий файл


14-1093399792
Думкин
2004-08-25 06:09
2004.09.12
С днем рождения! 25 августа


6-1089282243
banderas
2004-07-08 14:24
2004.09.12
TcpServer TcpClient Работают в блокирующем режиме ?


4-1091046751
sid
2004-07-29 00:32
2004.09.12
File Access Control