Цитата(SFx @ Apr 1 2010, 23:24)

а управление потоком какое стоит? все настройки в студи, телепаты в отпуске.
// вот и весь кусок. Используется UserPort
double dltt=0;
unsigned char buf[64]={0};
unsigned char*pbuf=buf;
unsigned char*str="HiTerminal!";
int c; int i=0;
// установки СОМ порта
outportb(BRH,0);//запрет прерываний
outportb(LCR,0x80);//bit DLAB=1
outportb(PORT1,0x1);//115200 bit
outportb(BRH,0);//
outportb(LCR,0x03);// 8 бит, 1-стоп, без контроля четности
outportb(FIFO,0);//запрет FIFO
outportb(MCR,0);//запрет modem
//======== ВЫВОД====================//
while (*str!=0)
{
outportb(PORT1,*str++);
do
{c=inportb(PORT1+5)&0x40;}
while(c==0);
}
//======== ВВОД====================//
while(1)
{
while((c=inportb(PORT1+5)&0x01)!=0x01) ;
buf[i]=inportb(PORT1);
i++; //число принятых байт
if ( buf[i-1]==0x30)// символ конца посылки
break;// выход из цикла опроса
}
.............................................
hUserPort = CreateFile("\\\\.\\UserPort", GENERIC_READ, 0, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
CloseHandle(hUserPort); // Activate the driver
............................................................................
pz = StartUpIoPorts(PORT1, true, hParWind);// hParentWnd); //
...............................................
void outportb(UINT portid, BYTE value)
{
__asm mov edx,portid
__asm mov al,value
__asm out dx,al
}
BYTE inportb(UINT portid)
{
unsigned char value;
__asm mov edx,portid
__asm in al,dx
__asm mov value,al
return value;
}
Цитата(zltigo @ Apr 2 2010, 19:18)

1.Да ну? Не успевает 115200

2.Вообще-то к портам RS232, в отличие от LPT, и так штатно доступ открыт.
3.Еще одно наслоение виде giveio только вносит дополнительное торможение.
См. например книжку Агурова" Последовательные интерфейсы ПК" стр.207.
Цитата(ASN @ Apr 2 2010, 19:24)

krik
На скорости 115200 при практически постоянном потоке работали сутками. Через стандартный WINAPI не пропадало НИ ОДНОГО байта. А задач на ПК "крутиться" много (одних COM штук 6). Не тормозит.
С Linux через TTY точно такая же ситуация.
Пропадает то не на WINAPI. С WINAPI просто меделнно. За 100 млсек надо успеть обменяться с 8-9 абонентами.