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);Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1