Ruby和Python通过串行发送数据的行为方式不同

时间:2014-06-18 16:20:32

标签: python ruby lcd

我目前正在尝试为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添加到文件的末尾,但它仍然没有在程序的第一次运行时显示它。

0 个答案:

没有答案