Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Непонятки с COM-портом

24K
17 октября 2007 года
engel65536
50 / / 17.10.2007
Добрый день, господа. Недавно пришлось столкнуться с передачей данных по последовательному порту, сам я раньше этим не занимался и нифига про это не знал. Посидел-почитал, вроде как разобрался. Открывается на 115200, посылки по 6 ьайтотправляются каждые 10мс. Протокол простейший - используются только контакты GND, TD и RD. А теперь поялвились некоторые проблемы:

1. Данные отсылаются через каждые 10мс, но иногда (1 или 2 раза в секунду) частота немного сбивается - и обычно пропадает одна из посылок. Ставил процессу приоритет реального времени - не помогло.

2. В каждом байте каждой посылки теряется один бит (старший). Пробовал разные настройки порта (четность, стоп-биты, кол-во полезных бит и т.д.) - не помогает...

Кто может знает или сталкивался с этим - помогите плиз.

А, вот еще что... Пытался работать с LPT - там вообще не получилось. Кто знает, как работать с ним из WinXP? (Заходил на pcports.ru - а там все, что есть, к билдеру не подходит и не работает)
33K
09 ноября 2007 года
smorodov
6 / / 09.11.2007
Компонент для ком порта на моем сайте smorodov.narod.ru
"winio" библиотечка есть как юзать показано ниже:
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <fstream>
#include <stdio.h>
#include <time.h>
//#include <dos.h>
#include "winio.h"


#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
unsigned short int outport (unsigned short int d);
unsigned short int strobe(unsigned short int d);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
bool bResult;
bResult = InitializeWinIo();
}
//---------------------------------------------------------------------------
unsigned short int outport (unsigned short int d)
{
asm
{

push es

mov ax,d  // передаем d -> AX
or  ax,2048
xor ax,2816 // инвертирование инвертированных битов

mov dx,0x378
out dx,al
/*inc dx
inc dx
mov al,ah
out dx,al
*/

mov dx,0x378
inc dx
in al,dx
mov ah,0
xor ax,128 // инвертирование инвертированных битов

pop es
}
return (_AX);
}


unsigned short int strobe(unsigned short int d)
{
asm
{

push es

mov ax,d  // передаем d -> AX
or  ax,2048
xor ax,2816 // инвертирование инвертированных битов

mov dx,0x378
//out dx,al
inc dx
inc dx
//mov al,ah
out dx,al

/*
mov dx,0x378
inc dx
in al,dx
mov ah,0
xor ax,128 // инвертирование инвертированных битов
*/

pop es
}
return (_AX);
}



void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
ShutdownWinIo();

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
outport (StrToInt(Edit1->Text));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
Edit1->Text=TrackBar1->Position;
outport (TrackBar1->Position+256);
outport (TrackBar1->Position+0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
//outport(50);
strobe(1);
Sleep(20);
//outport(255);
strobe(0);
}
//---------------------------------------------------------------------------
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог