Не могу разобраться в чем проблемма. Все нормально отсылает в комп, но при приеме упорно накапливает в строке-буффере только первый символ. Код:
program NewProject;
uses comm, thread;
var
i,
id: integer;
t: string;
procedure threadaction; // Тред. Собираем все что пришло с порта в строку t
begin
t := t + chr(comm_read);
end;
procedure WaitKey; // Ждем нажатия на звездочку
begin
while GetKeyClicked <> KE_STAR do
begin
Delay(100);
end;
end;
begin
drawText(GetProperty('microedition.commports'),0,0); // Выводим доступные порты
repaint;
drawText(comm_open('comm:COM0;baudrate=115200'),0,10); //Открываем COM0
drawText('Opened.',0,20);
repaint;
WaitKey;
drawText(comm_write_string('Test Line 123456789'),0,70); //Посылаем в комп тестовую строку
drawText('Send string OK.',0,30);
repaint;
WaitKey;
init; // Запускаем тред с comm_read
start;
repeat // Постоянно выводим что у нас образовалось в строке-буффере
setcolor(0,0,0);
fillrect(0,0,100,20);
setcolor(0,255,0);
DrawText(t, 0,0);
repaint;
until getkeyclicked = KE_STAR; // выходим по звездочке
stop; // все закрываем.
comm_close;
drawText('Closed.',0,50);
WaitKey;
end.
Причем если отключить использование треда и заменить цикл repeat-until на что-то вроде
while t<>'0' do begin
i:= comm_read;
drawText(integertostring(i),id,40);
repaint;
id:= id+10;
end;
То все работает. Но comm_read ждет пока что-либо не получит из порта, тоесть если ничего не приходит - получаеться пауза в цикле (программе). А в терминалке мне этого не надо совершенно. Где косяк?
Хелп плиз! Проект из-за этого застопорился ((
P.S. Есть конечно мысли сделать как-нибуть свою псевдо-мультитредность нахимичив чего-нибуть с таймером, но пока мысль эта до конца не оформилась (