Ubuntu 16.04, версия ядра 4.4.0-116
Мое устройство -
>> lspci -knn | grep bt -A2; lsusb
[..]
Bus 003 Device 008: ID 04ca:3011 Lite-On Technology Corp.
[..]
>> lspci | grep -i ath
07:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 20)
Мне пришлось сделать следующее (добавив идентификатор набора микросхем к btusb-driver- патч от Pilot6) для запуска моего адаптера Bluetooth на Acer Aspire V17 Nitro VN7-791G-72FC с Combo-картой Atheros с Bluetooth Chipset Lite-On:
wget https://launchpad.net/~hanipouspilot/+archive/ubuntu/bluetooth/+files/btusb-lp1542743-dkms_0.1_all.deb
mkdir tmp
dpkg-deb -R btusb-lp1542743-dkms_0.1_all.deb tmp
sudo nano tmp/usr/src/btusb-lp1542743-0.1/btusb.c
в
"static const struct usb_device_id blacklist_table[] = {"
добавление новой строки со следующим кодом:
{ USB_DEVICE(0x04ca, 0x3011), .driver_info = BTUSB_QCA_ROME },
после компиляции, установки и перезагрузки:
sudo dpkg-deb -b tmp btusb-lp1542743-dkms_0.1_all_modifiedAdd3011.deb
sudo dpkg -i ./btusb-lp1542743-dkms_0.1_all_modifiedAdd3011.deb
sudo reboot
теперь все работает нормально. :-) Я счастлив.
В браузере объектов при поиске Repaint в библиотеке MSForm будет найден UserForm, но Frame. Поэтому, если вы хотите напрямую использовать прогресс в пользовательской форме, вы можете попытаться обернуть ваш Bar в MSForms.Frame, а когда требуется перерисовать, просто позвоните ему для этого фрейма. В этом случае остальная форма пользователя с его элементами управления не должна влиять на это, и только кадр должен быть перекрашен.
Me.Frame1.Repaint ' Me is the main user form
вместо того, чтобы иметь отдельный прогресс, потому что это кажется ненадежным в отношении, если оно будет сверху или в фоновом режиме. Это можно легко решить с помощью отдельной модальной формы, которая покажет ход. Эта форма будет иметь кнопку отмены и будет увеличивать событие Start, когда она отображается, поэтому вызывающая форма может начать выполнять долгое задание и событие Cancel, когда пользователь нажал кнопку отмены, преждевременно отменив прецессию. Например, HTH.
вместо того, чтобы иметь отдельный прогресс, потому что это кажется ненадежным в отношении, если оно будет сверху или в фоновом режиме.
Option Explicit
Public Event Start()
Public Event Cancel(ByRef ignore As Boolean)
Private Sub CommandButtonCancel_Click()
Dim ignoreCance As Boolean
ignoreCance = False
RaiseEvent Cancel(ignoreCance)
If ignoreCance Then
Exit Sub
Else
Unload Me
End If
End Sub
Private Sub UserForm_Activate()
Static isActivated As Boolean
Me.Repaint
If Not isActivated Then
' ensure only once activation
isActivated = True
RaiseEvent Start
Unload Me
End If
End Sub
Public Sub Update(ByVal newValue As Long)
' update progrress bar here
' Pseudo code: Me.Progress.Value = newValue etc.
Me.Repaint
End Sub
UserFormMain Option Explicit
Private WithEvents progress As UserFormProgress
Private cancelProgresForm As Boolean
Private Sub CommandButtonDoSomethingLongRunning_Click()
Set progress = New UserFormProgress
' Set progress form
' progress.Caption = ...
' progress.MaxValue = 123456789
progress.Show vbModal
End Sub
Private Sub progress_Start()
' Callback from progress form, here runs the lung running process
' calculate some complete status value
Dim completeValue As Long
completeValue = 0
cancelProgresForm = False
Do
completeValue = completeValue + 1
progress.Update completeValue
DoEvents
Loop While cancelProgresForm = False And completeValue < progres.MaxValue
End Sub
Private Sub progress_Cancel(ignore As Boolean)
If MsgBox("Do you want to cancel?", vbQuestion Or vbYesNo) = vbNo Then
ignore = True
Else
ignore = False
cancelProgresForm = True
End If
End Sub