Я использую Ruby/green_shoes для создания приложения gui. Я хочу, чтобы пользователь мог выбрать COM-порт, а затем нажать кнопку, чтобы запустить скрипт.Ruby: Green_shoes, присваивание list_box переменной
Это почти сделано, но я не могу взять выделенный COM-порт и назначить его переменной «порт», чтобы он мог быть передан моему сценарию, когда я нажимаю кнопку.
para "Select your COM port: "
list_box items: ["COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "COM10"], width: 120
@push = button "Begin Patching Process"
@push.click {
serial = SerialPort.new("#{port}", 9600)
serial.read_timeout = 200
serial.write("\x50\xBB\xFF\x01\x25\x98\x4D") #contains initialization to program
serial.readlines
serial.write("\x02") #requests firmware version
serial.readlines
serial.write("\x06")
serial.readlines
serial.write("\x58\x1f\xc0\x10\x00\x00\x00\x02\x02\x02\x01\x00\x00\x00\x01\x01\x34\x01\x80\x00") #contains VHF freqs (\x01\x34\x01\x80)
serial.readlines
serial.write("\x06\x58\x1f\xd0\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x04\x00\x05\x20\x00") #contains UHF freqs (x01\x04\x00\x05\x20)
serial.readlines
serial.write("\x06\x58\x1e\xe0\x10\x20\x20\x56\x46\x4f\x20\x20\x55\x4e\x4c\x4f\x43\x4b\x20\x00\x00") #contains pwr on msg (ASCII)
}
end
Существует, конечно, больше кода после этого, содержащего то, что нужно делать, когда кнопка нажата.
Мне просто нужно иметь его так, чтобы, когда я выбираю COM7, например .... переменная 'port' равна выбранному COM-порту из списка.
Работа пересмотров ниже, благодаря принятому ответу @ 7stud
Shoes.app title: "BFB-251 VFO Patcher", width: 420, height: 120 do
background gray
@note = para "This Patcher is for use ONLY with Firmware BFB251"
#@note = para "This software does NOT confirm your model at this time."
#@note = para "Hold down the 3 key while powering on the unit to confirm it's version"
@note = para "I take no responsibility for any damanges or misuse."
para "Select your COM port: "
@my_list_box = list_box(
items: ["COM1", "COM2", "COM3", "COM7"],
width: 120,)
button "Begin Patching Process" do
port = @my_list_box.text
serial = SerialPort.new("#{port}", 9600)
serial.read_timeout = 200
serial.write("\x50\xBB\xFF\x01\x25\x98\x4D") #contains initialization to program
serial.readlines
serial.write("\x02") #requests firmware version
serial.readlines
serial.write("\x06")
serial.readlines
serial.write("\x58\x1f\xc0\x10\x00\x00\x00\x02\x02\x02\x01\x00\x00\x00\x01\x01\x34\x01\x80\x00") #contains VHF freqs (\x01\x34\x01\x80)
serial.readlines
serial.write("\x06\x58\x1f\xd0\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x04\x00\x05\x20\x00") #contains UHF freqs (x01\x04\x00\x05\x20)
serial.readlines
serial.write("\x06\x58\x1e\xe0\x10\x20\x20\x56\x46\x4f\x20\x20\x55\x4e\x4c\x4f\x43\x4b\x20\x00\x00") #contains pwr on msg (ASCII)
end
end
Пройдитесь по своим переменным @note; они ничего не делают. Кроме того, вам нужно выяснить, как отступать от кода. Любой текстовый редактор программирования автоматически сделает это за вас. Не используйте обычный текстовый редактор. – 7stud