Всё мне это нужно чтобы подключить аккумулятор к мини пк и сделать переносным...
Это вольтметр usb и в программе надо выбрать диапазон сначала, а потом поялвляются данные..
Так вот нужно сделать:
1) так чтобы кнопка с диапазоном 20 нажималась автоматически или кнопки вообще не было, но команда передавалась на устройство
2) программа подсчитывала и выводила в окне не вольты а проценты оставшегося заряда 0%-7,5В 100%-12,6В
3) чтобы программа сворачивалась в трей и там был значек с батарейкой или с цифорками (проценты заряда), или всё сразу
4) выскакивало предупреждение о малом остатке заряда, как на ноутбуке короче..
ПРОШУ ПОМОЩИ ПОЖАЛУЙСТА...очень для проекта нужно, но я не умею проги писать
#USB_PID=$EF01
#USB_VID=$AAAC
Declare FindDevice_Timer()
Declare SendDevice()
Dim OutBytes.c(8)
Global R_DeviceHandle, W_DeviceHandle
Global FontID1
FontID1 = LoadFont(1, "Times New Roman", 36)
OpenWindow(0, 497, 191, 565, 404, "USB Вольтметр", #PB_Window_MinimizeGadget | #PB_Window_SizeGadget )
ButtonGadget(10, 350, 40, 140, 100, "10")
ButtonGadget(20, 350, 160, 140, 100, "20")
ButtonGadget(30, 350, 280, 140, 100, "200")
StringGadget(40, 40, 40, 100, 100, "", #PB_String_ReadOnly)
SetGadgetFont(40,FontID(1))
StringGadget(50, 40, 160, 100, 100, "", #PB_String_ReadOnly)
SetGadgetFont(50,FontID(1))
TextGadget(60,280,10,100,30,"Устройство не подключено")
AddWindowTimer(0, 1, 200)
Procedure FindDevice_Timer()
;Shared DeviceHandle
Static Old_Test
Test=HID_Lib_DeviceTest(#USB_PID, #USB_VID)
If Test<>Old_Test
Old_Test=Test
If Test
HID_Lib_CloseDevice(R_DeviceHandle) : HID_Lib_CloseDevice(W_DeviceHandle)
W_DeviceHandle=HID_Lib_OpenDevice(#USB_PID, #USB_VID)
R_DeviceHandle=HID_Lib_OpenDevice(#USB_PID, #USB_VID)
SetGadgetText(60,"")
Else
HID_Lib_CloseDevice(R_DeviceHandle) : HID_Lib_CloseDevice(W_DeviceHandle)
R_DeviceHandle=0 : W_DeviceHandle=0
SetGadgetText(60,"Устройство неподключено")
EndIf
EndIf
EndProcedure
Procedure ReadDevice_Thread(*x)
Dim InBytes.c(9)
Repeat
If R_DeviceHandle
HID_Lib_ReadDevice(R_DeviceHandle, @InBytes(), 9)
If InBytes(1)=1
SetGadgetText(40,Str( InBytes(2)))
EndIf
If InBytes(1)=2
SetGadgetText(50,Str( InBytes(2)))
EndIf
EndIf
Delay(20)
ForEver
EndProcedure
Procedure SendDevice()
Shared OutBytes()
If W_DeviceHandle
HID_Lib_WriteDevice(W_DeviceHandle, @OutBytes(), 9)
EndIf
EndProcedure
CreateThread(@ReadDevice_Thread(),0)
Repeat
Event=#PB_Event_Timer
If EventTimer()
FindDevice_Timer()
EndIf
Event=#PB_Event_Gadget
Select EventGadget()
Case 10
SetGadgetText(50,"10")
OutBytes(1) = 3
OutBytes(2) = 10
SendDevice()
Case 20
SetGadgetText(50,"20")
OutBytes(1) = 3
OutBytes(2) = 20
SendDevice()
Case 30
SetGadgetText(50,"200")
OutBytes(1) = 3
OutBytes(2) = 200
SendDevice()
EndSelect
Event=WaitWindowEvent()
Until Event=#PB_Event_CloseWindow