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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.006 c
2-1198405355
WebSQLNeederr
2007-12-23 13:22
2008.01.27
Ламерский вопрос - рендом из определенного диапазона


2-1198502186
saNat
2007-12-24 16:16
2008.01.27
Определение разделителя целой/дробной части


4-1182844547
Shakesbeer
2007-06-26 11:55
2008.01.27
Определить, запущен ли exe, не составляя список процессов.


3-1190274164
thely
2007-09-20 11:42
2008.01.27
Бесплатные утилиты для ремонта GDB?


3-1190377746
vajo
2007-09-21 16:29
2008.01.27
не открываются базы Interbase





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