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

Вниз

Получение данных с СОМ порта   Найти похожие ветки 

 
vamp_avp   (2007-12-13 18:43) [0]

Привет всем! Не знаю в какой раздел писать.
Вопрос в следующем:
к компу подключено устройство через сом1 порт
какие параметры не знаю и найти наверное не реально
можно как то получить данные с сом порта?
если можно с примерами
заранее благодарен!!!


 
Anatoly Podgoretsky ©   (2007-12-13 18:49) [1]

По теме в WinAPI, по уровню, по крайней мере в данный момент в Начинающие.


 
Германн ©   (2007-12-13 18:52) [2]


> можно как то получить данные с сом порта?
> если можно с примерами

Теоретически можно. Но лучше все-таки искать документацию на устройство.


 
Free_Breeze   (2007-12-13 20:11) [3]

На torry.net вроде даже встречал компонент для работы с СОМ-портом, правда давненько уже, года полтора назад. посмотри там.


 
morgoth   (2007-12-14 10:10) [4]

>>какие параметры не знаю и найти наверное не реально
наверное все таки стоит попробовать поискать, у устройства же есть производитель или оно совсем неизвестное?

>>можно как то получить данные с сом порта?
как-то может и можно, но без доки на него даже не поймешь что получишь, если только интуитивно.


 
F@T@L_Err0r   (2007-12-14 10:37) [5]

Для начала инициализируеш порт...И потом читаеш из него.


 
korneley ©   (2007-12-14 10:47) [6]

Вообще-то с COM работают так же, как и с файлами + есть готовые компоненты. Бесплатные. Некоторые с документацией на русском. А некоторые даже TComPort называются. В Гугл...


 
morgoth   (2007-12-14 10:49) [7]

>но без доки на него даже не поймешь что получишь
имелось ввиду документация к устройству конечно, а не com порту


 
korneley ©   (2007-12-14 11:09) [8]


> morgoth   (14.12.07 10:49) [7]
Иногда даже с документацией, т.к. она печатная, в единственном виде, неизвестно кем, как и когда переведена, для этого ли девайса вообще етс. ;-)


 
morgoth   (2007-12-14 11:17) [9]

как правило документация дается к девайсу, если же ее нет, то стоит порыскать в инете, можно и без перевода...
устройство может реагировать только на определенные посланные ему данные, которые описаны в доке к нему, и соответсвенно отвечает данными в определенном формате, который также должен быть описан в доке, чем здесь может помочь компонет по работе с портом, не знаю ))), если только чтобы передать/получить данные с сом-порта. Но у автора в вопросе присутствует какое-то подключенное устройство.


 
korneley ©   (2007-12-14 12:50) [10]


>  если только чтобы передать/получить данные с сом-порта.
>  Но у автора в вопросе присутствует какое-то подключенное
> устройство.
Присутствует. Но! "какие параметры не знаю и найти наверное не реально можно как то получить данные с сом порта?" :) Вот тут-то и компонент ему в помощь. Ну еще 1/8/No + одинаковые скорости с обоих сторон. А уж, что он будет слать, как интепретировать полученное - другой вопрос 8-)


 
morgoth   (2007-12-14 12:56) [11]

если только так, то ноу комментс )))


 
F@T@L_Err0r   (2007-12-14 13:00) [12]

а чего он передает неизвесно что ли???


 
morgoth   (2007-12-14 13:08) [13]

>>а чего он передает неизвесно что ли???
посмотри [1], может поймешь что он там передает...


 
morgoth   (2007-12-14 13:10) [14]

вернее не [1], а [0] )))


 
korneley ©   (2007-12-14 13:11) [15]


> morgoth   (14.12.07 13:08) [13]
+ и кому.


 
tesseract ©   (2007-12-14 14:18) [16]


> какие параметры не знаю и найти наверное не реальноможно
> как то получить данные с сом порта?


Без протокола знания протокола можешь с высокой вероятностью получить ответ от устройтсва " команда не опознана".


 
Anatoly Podgoretsky ©   (2007-12-14 14:46) [17]

Вроде автору только параметры надо определить, скорость, количество бит, а это легко делается методом проб и ошибок.


 
Германн ©   (2007-12-14 15:41) [18]


> Anatoly Podgoretsky ©   (14.12.07 14:46) [17]

Не всегда. Если устройство работает как slave, т.е. только отвечает на запросы, то обломишься пробовать.


 
Anatoly Podgoretsky ©   (2007-12-14 15:54) [19]

> Германн  (14.12.2007 15:41:18)  [18]

А для этого от автора нужна дополнительная информация, он же ничего не сказал, может у него обычное внешнее устройство с выводом лога на ком порт, в режиме принтера.


 
korneley ©   (2007-12-14 16:10) [20]

При работе с устройствами, подключенными по COM, чаще всего возникают вопросы из оперы: "Как симметрично настроить?". (выставить скорость, стоп-биты, длину, проверку чётности,...) Причем, если в софте еще можно "подкрутить" (своё же :), то железо, зачастую, настраивают другие дядьки. Из последнего (про COM): люди крест на пузе рисовали, что 19400, а оказалось 2200. Пришлось читать мануал к железу, и проверять. Они были не правы :)


 
korneley ©   (2007-12-14 16:14) [21]

Да, это к тому, что протокол, конечно, надо знать. Но не только. Ещё и клаву на железе, называемым "устройство через сом1 порт "


 
jin_jin   (2007-12-27 10:48) [22]

Держи кусок рабочего кода кода с моей проги читает первые 4 байта
лишние переменные удалишь
...
var
 Form1: TForm1;
 Port:Thandle = 0;
 DCB:TDCB;
 lpCommTimeouts:TcommTimeOuts;
 kd,l:integer;
 com1,com2:string;
 overlapp: Toverlapped;
 lpevtMask:dword;
  num:integer;
  buf:array  [0..3] of  byte;
  proverka:array [0..10] of byte;

  bufs,ii:integer;
  ct: TCommTimeouts;

implementation

{$R *.dfm}

...

procedure TForm1.FormCreate(Sender: TObject);
var i:word;
  begin
       l:=0;
          CloseHandle(port);
     port:=0;

        port:= CreateFile ("com1",
                        GENERIC_READ or GENERIC_WRITE,0,nil,
                        OPEN_EXISTING,0,0);
    {   with dcb do begin
       BaudRate := 1200;
       ByteSize:= 8;
       Parity:=n;
       StopBits:=1;
       end;
     SetCommState (port, dcb); }

// ct.ReadTotalTimeoutConstant := 0;
//  ct.ReadIntervalTimeout := 0;
//  ct.ReadTotalTimeoutMultiplier :=15;
// ct.WriteTotalTimeoutMultiplier := 0;
// ct.WriteTotalTimeoutConstant := 10;

     buf[0]:=0;
 end;

procedure TForm1.Timer1Timer(Sender: TObject);
var n,BytesRead:integer;

begin

 flushfilebuffers(port);
 setcommMask (port,EV_rxchar);
 WaitCommEvent (port,lpevtMask,nil);
 readFile(port, buf,4 , dword(BytesRead), nil);

 label1.Caption:="1 байт = "+inttostr(buf[0]);
 label2.Caption:="2 байт = "+inttostr(buf[1]);
 label3.Caption:="3 байт = "+inttostr(buf[2]);
 label4.Caption:="4 байт = "+inttostr(buf[3]);

   label5.Caption:= "Количество принятых байт = " + inttostr(BytesRead);
   label6.Caption:= "Всего принятых байт = " + inttostr(kd*BytesRead);

end;



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

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

Наверх




Память: 0.52 MB
Время: 0.015 c
15-1198264565
Kerk
2007-12-21 22:16
2008.01.27
Комиксы по мотивам новых правил форума


1-1192971907
Dimmitt
2007-10-21 17:05
2008.01.27
Синхронная прокрутка двух Memo


2-1198427858
Ezorcist
2007-12-23 19:37
2008.01.27
read div real


2-1198874373
den11111
2007-12-28 23:39
2008.01.27
Как открыть сетевое подключение


2-1198650821
uno
2007-12-26 09:33
2008.01.27
UdpSocket и отправка уведомления