我目前正在尝试为LCD创建一个Ruby库。我编写了少量发送图像的Python代码,并从示例代码中派生出来。这段代码有效。它使用提供的位图图像成功更新了LCD屏幕。
import serial
import io
import sys
import os
import time
import re
ser1 = serial.Serial() #initialize serial connection
ser1.baudrate = 115200 #set baud rate
ser1.port = '/dev/ttyACM0' #set port
print ser1.port #print out port for verification
ser1.open() #start serial connection
bmp1 = open('image.bmp', 'rb') #open bitmap file for sending
Data1 = bmp1.read() #store data in variable
bmp1.close() #close bitmap file
ser1.write(Data1) #send data over serial to the LCD
但是,当我将此代码转换为Ruby时,运行它不会在LCD上显示任何内容。再次运行它也不会显示任何内容。然而,第三次运行将导致LCD填充三个图像副本,彼此重叠。如果我清除屏幕并再次运行,重叠图像的最终结果将不会始终与前一次相同。
以下是我的Ruby代码:
require 'serialport'
port = "/dev/ttyACM0"
baud = 115200
puts "Connecting to LCD on port #{port}, with baud #{baud}"
lcd = SerialPort.new(port, baud)
bmp = File.open("image.bmp", "rb")
data = bmp.read
bmp.close
puts "Sending data..."
lcd.write(data)
我似乎无法弄清楚为什么他们会以不同的方式行事,或者如何使Ruby代码按预期工作。我还尝试将lcd.flush
添加到文件的末尾,但它仍然没有在程序的第一次运行时显示它。