Я пытаюсь прочитать серийные данные с Arduino на мою Ма c (10.12.6). Я скачал библиотеку Synapse бесплатно Pascal (Lazarus v.2.0.8) с здесь , но я столкнулся с ошибкой ...
Arduino запрограммирован с использованием Arduino IDE и отправляет случайные числа (от 0 до 255) в виде строки на последовательный порт. Я пытаюсь прочитать эти строки, используя Free Pascal, чтобы я мог построить значения.
Следуя инструкциям здесь Я скачал и использовал библиотеку Synapse следующим образом:
1) Распакуйте папку библиотеки 2) В Lazarus перейдите в «Проект» -> «Инспектор проектов» -> «Добавить файлы из файловой системы» -> выбрать «synaser.pas». 3) Добавьте следующий код в событие кнопки формы:
procedure TForm1.Button1Click(Sender: TObject);
var
ser: TBlockSerial;
begin
ser := TBlockSerial.Create;
try
ser.Connect('my-com-port'); // write here Arduino COM port number (on linux it's something like '/dev/ttyUSB0')
Sleep(250);
ser.config(9600, 8, 'N', SB1, False, False);
ser.SendString('on'); // button 2 should have 'off' here
finally
ser.free;
end;
end;
4) Нажмите run.
В файле synaser.pas появляется сообщение об ошибке:
Ошибка несовместимые типы: получил «ShortInt» ожидаемый «Pointer» ..
Вот часть файла synaser.pas, на которую ссылаются:
{$IFNDEF MSWINDOWS}
procedure TBlockSerial.Purge;
begin
{$IFNDEF FPC}
SerialCheck(ioctl(FHandle, TCFLSH, TCIOFLUSH));
{$ELSE}
{$IFDEF DARWIN}
SerialCheck(fpioctl(FHandle, TCIOflush, TCIOFLUSH)); { <------ here*******}
{$ELSE}
SerialCheck(fpioctl(FHandle, TCFLSH, Pointer(PtrInt(TCIOFLUSH))));
{$ENDIF}
{$ENDIF}
FBuffer := '';
ExceptCheck;
end;
Я использую Ma c, и это Кажется, ошибка связана с windows системой?