Добрый день! Подскажите пожалуйста! Имеется USB LCD Display (LCDSysInfo) Есть пример на C# Мне необходимо перенести пример на delphi 7 Использую так - же библиотеку USBLib как и на C# LibUsbDotNet
к Устройству подключаюсь - всё нормально, линию на экране выбираю и цвет текста а вот сам текст непонимаю как отправить, то какие то символы то пустота! Что я делаю не так?! Исходник прикрепил! Заранее благодарен!
Процедура отправки текста в линию на C# выглядит
| Код | public static void Display_text_on_line(int line, string textstring, bool leavespaceforicon,int alignment, int colorcode) { String Tempstring= textstring; Tempstring = Text_conversion(Tempstring, leavespaceforicon,alignment);
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); Byte[] text_bytearray = encoding.GetBytes(Tempstring); int temp_2 = text_bytearray.Length; if (leavespaceforicon == false) temp_2 = temp_2 + 256; if (colorcode > 32) colorcode = 0; if (line < 1 || line > 6) line = 1; line = line - 1; int temp_3 = line * 256 + colorcode; UsbSetupPacket packet = new UsbSetupPacket((byte)(UsbCtrlFlags.Direction_Out | UsbCtrlFlags.RequestType_Vendor), (byte)24, (short)temp_2, (short)temp_3, (short)0x0); if (LCDDrive.MyUsbDevice != null) { LCDDrive.MyUsbDevice.ControlTransfer(ref packet, text_bytearray, text_bytearray.Length, out bytes_transferred); } }
|
Моя процедура на Delphi 7 выглядит:
| Код | procedure TForm1.ButtonTextClick(Sender: TObject); var handle: Pusb_dev_handle; i,line,tmpline: integer; text_string:AnsiString; LcdByte:TByteArr; //LcdByte: array of byte; begin usb_init(); if (usbOpenDevice(handle, USBDEV_SHARED_VENDOR_K, 'coldtears electronics', USBDEV_SHARED_PRODUCT_K, Product) <> 0) then begin raise Exception.Create(Format( 'Could not find USB device "'+Product+'" with vid=$%x and pid=$%x !', [USBDEV_SHARED_VENDOR_K, USBDEV_SHARED_PRODUCT_K])); exit; end;
text_string:=Form1.Text_conversion(txtText.Text,true,1); memoLog.Lines.Add('text_string='+text_string);
LcdByte:=ConvertStringAscii(text_string); //ASCI line:=SpinLine.Value; tmpline:=(line-1)*256+ComboColor.ItemIndex+1;
usb_control_msg(handle, 64, 24, 0, tmpline, LcdByte, sizeof(LcdByte), 5000); usb_close(handle); end;
|
|