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

Вниз

вопрос по написанию программы передачи данных через порты   Найти похожие ветки 

 
Алексей Шолкин   (2004-05-14 16:12) [0]

Здравствуйте  участники !
Хотелось бы получить консультацию по поводу как в Delphi организовать передачу данных по COM2 и  LPT портам . Поиск в Интернете ни чего конкретно не дал. В журнале нашёл программу  передачи данный по COM2 но в ней не всё понятно (чего понятно написал коментарий на остольные команды ответа не нашёл) и как бы ни чего не принимает с ком порта.
Вот эта программа просьба помочь с ней разобраться.
Как организовать передачу данных через LPT  ? (я заменил в этой программе COM2 на LPT и убрал но у меня ни чего не получилось)

var
 MainForm: TMainForm;
 hCOM,hOUTFile:tHandle;
 DCB:tDCB;
 Stat:tCOMStat;
 ByteCount:dWord;
 Lock:bool;
 DataBuf:array[1..45] of byte;

Const

 BufSize=SizeOf(DataBuf);

procedure TMainForm.N8Click(Sender: TObject);
begin
  Stat.cbInQue:=0;
  ByteCount:=0;
  Lock:=true;
    hCOM:=CreateFile("COM2",GENERIC_READ,0,nil, //открывает коммуникационные ресурсы
    OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
  if hCOM=INVALID_HANDLE_VALUE then begin
     ShowMessage("Не могу открытьпорт");
     Application.Terminate;
     end;
    ShowMessage("Oткрыт порт COM2");
    ShowMessage("Идёт настройка порта");
    SetupComm(hCom,1600,1600);           // размер буфферов ввода вывода
    GetCommState(hCOM,DCB);             //читает текущие настройки ресурсов
    with DCB do begin
    BaudRate:=9600;                     // Скорость передачи
    ByteSize:=8;                        // количество бит в байте
    Parity:=EvenParity;                 // бит паритета
    StopBits:=OneStopBit;               // стоп биты
    end;
    SetCommState(hCOM,DCB);             //устанавлиает настройки ресурсов
    if not SetCommState(hCOM,DCB) then begin
    ShowMessage("Порт COM2 не настроен");
    Application.Terminate;
    end;
   hOUTFile:=CreateFile("OUT.BIN",GENERIC_READ or GENERIC_WRITE,0,nil,
   OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
   if hOUTFile=INVALID_HANDLE_VALUE then begin
   ShowMessage("Не могу открыть выходной фаил");
   Application.Terminate;
   end;
   Lock:=false;
end;

procedure TMainForm.Timer1Timer(Sender: TObject);
var I,Blocks,Errors,Bytes:dWord;
begin
STPanel.Panels[1].Text:="Тикущая Дата / " + DateToStr(Date);
STPanel.Panels[2].Text:="Тикущее время / " + TimeToStr(Time);
if not Lock then begin
     Lock:=true;
     ClearCommError(hCom,Errors,@Stat);
     Blocks:=Stat.cbInQue div BufSize;
     ShowMessage("Идёт передача");
     if Blocks>0 then begin
        for I:=1 to Blocks do begin
         if not ReadFile(hCOM,DataBuf,BufSize,Bytes,nil) then Beep;
     WriteFile(hOUTFile,DataBuf,BufSize,Bytes,nil);
     inc(ByteCount,Bytes);
        end;
     FlushFileBuffers(hOUTFile);
     end;
 Label1.Caption:="Прочитано - "+IntToStr(Blocks)
           +" блоков.  Записано в фаил - "
           +IntToStr(ByteCount)+"  байт";

     end;
end;
Помогите разобраться или дайте пожалуйста ссылку где подробно описано как передать данные через порт COM 2 LPT


 
jack128 ©   (2004-05-14 20:08) [1]


> ClearCommError(hCom,Errors,@Stat);
возвращает информацию о состоянии порта

> Blocks:=Stat.cbInQue div BufSize;
Stat.cbInQue - кол - во данных в буффере ком порта ещё не прочитанных с помощью ReadFile

> FlushFileBuffers(hOUTFile
скидывает данные из буффера Windows в файл hOUTFile (для ускорения работы с диском винда кеширует чтение/запись)

> Помогите разобраться или дайте пожалуйста ссылку где подробно
> описано как передать данные через порт COM 2 LPT
на этом сайте две статьи были. Вообще инфы полно,странно, что ты не нашёл..



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

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

Наверх





Память: 0.46 MB
Время: 0.033 c
14-1086096409
Ega23
2004-06-01 17:26
2004.06.20
Где можно почитать про такую штуку, как Pipes?


1-1086761992
artem_123
2004-06-09 10:19
2004.06.20
вопрос по mainmenu


14-1086262604
Балбес
2004-06-03 15:36
2004.06.20
Проблема с Делфи 6


6-1083240852
-+= Evgeney =+-
2004-04-29 16:14
2004.06.20
ServerSocket


14-1086334933
Clickmaker
2004-06-04 11:42
2004.06.20
SetProcessWorkingSetSize и своппинг





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