Работа с последовательным портом в PascalABC.NET

Подскажите, пожалуйста, существует ли пример работы с COM-портом? Google не помог. Помогаю ребенку начать работать с роботом LEGO NXT через Bluetooth, но почти сразу уперся в отсутствие метода SerialPort.Write (Byte[], Int32, Int32): Вот пример программы с ошибкой компиляции. Что я не так делаю? P.S. Не пинайте строго, последний раз я писал на Паскале еще на PDP-11.

program bt_nxt;
uses
   System.IO.Ports;
var
   sp : SerialPort; 
   txbuf : array[0..100] of byte;   
procedure bt_send(opcode: integer; len : integer);
begin
 txbuf[0] := byte(len);
 txbuf[1] := byte(len div 256);
 txbuf[2] := byte(opcode);
 txbuf[3] := byte(opcode div 256);
 sp.Write (txbuf, 0, 4); {Project2.pas(13) : Нет перегруженной подпрограммы с такими    типами параметров}
end;

begin
 sp := new SerialPort('COM4');     
 sp.Open();  
 sp.ReadTimeout := 1500; 
 bt_send($8801, 2);

 for i : integer :=0 to 100 do
  begin
   writeln(ord(sp.ReadByte));
  end;
 sp.Close(); 
end.
program bt_nxt;

uses
   System.IO.Ports;
var
  sp: SerialPort; 
  txbuf: array of byte := new byte[4];

procedure bt_send(opcode: integer; len: integer);
begin
  txbuf[0] := byte(len);
  txbuf[1] := byte(len div 256);
  txbuf[2] := byte(opcode);
  txbuf[3] := byte(opcode div 256);
  sp.Write(txbuf, 0, 4); {Project2.pas(13) : Нет перегруженной подпрограммы с такими    типами параметров}
end;

begin
  sp := new SerialPort('COM4');     
  sp.Open();  
  sp.ReadTimeout := 1500; 
  bt_send($8801, 2);
  
  for i: integer := 0 to 100 do
  begin
    writeln(ord(sp.ReadByte));
  end;
  sp.Close(); 
end.

Надо использовать динамические массивы

Спасибо, заработало. Ответ от робота получили. Во времена Вирта в Паскале такого не было. Ж)

Роботов таких тоже не было :slight_smile:

1 лайк