a = 0
Все верно - на ком порту данные не были приняты в течении одной миллисекунды.
Задача то какая стоит? А то "помогите разобраться" без постановки задачи как то не очень помогает ее хотя бы понять...
Модератор: Модераторы
a = 0
serg_iv писал(а):Данные на ком порту какие? Байты или строки, с каким нибудь спецефическим символом конца строки?
Конфигурация порта - на какой скорости поступают данные, есть бит паритета или нет?
Это известно?
//инициализация последовательного порта
ser:=TBlockserial.Create; //создаем устройство
ser.RaiseExcept:=false; //не обрабатываем исключения ошибок связи
ser.Connect(nPort); //соединяемся с портом
ser.Config(4800,8,'N',0,false,false);//настраиваем скорость, стоп биты, паритет
repeat
data := ser.RecvByte(1000);
// .... тут твой код обработки данных
until Terminated;
ser.Free;//освобождаем устройство
end.
alexrayne писал(а):ветку стартовали с задачи обмена по РС485. подкажите ктонить сцылко на открытый протокол обмена, чтоб свой велосипед не городить.
ser:=TBlockserial.Create; //создаем устройство
ser.RaiseExcept:=false; //не обрабатываем исключения ошибок связи
ser.Connect('/dev/ttyS0'); //соединяемся с портом
ser.Config(115200,8,'N',0,false,false);//настраиваем скорость, стоп биты, паритет
if ser.InstanceActive then
repeat
data := ser.RecvByte(1000);
writeln(data);
until Terminated;
ser.Free;//освобождаем устройство
Yurakl писал(а):следующее подключение InstanceActive становится равным FALSE.
if Ser.LastError<>0 then ShowMessage(' ОШИБКА - '+LastErrorDesc+' ('+IntToStr(Ser.LastError)+')';
Yurakl писал(а):В чем может быть причина?
if Serial.Handle<>INVALID_HANDLE_VALUE then
begin
Serial.Flush; // ждем до полного очищения буфера
Serial.Purge; // если что то и есть до очищаем до конца
Serial.CloseSocket; // отключаемся
end;
Yurakl писал(а):порт я освободил.
Yurakl писал(а):Устройство подключено, оно передает данные. Однако на компьютере мне выводятся нули....
if Ser.CanReadEx(100) then begin
data := ser.RecvByte(0);
writeln(data);
end;
serg_iv писал(а):Ну и пробуй, желательно вынести в отдельный поток
Yurakl писал(а):порт я освободил.
Как?
a:=ser.RecvByte(1000);
writeln(a);
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6