Q Serial Port behaves differently on windows 8
-
I am writing an application that takes data from serial devices. Up until now, I have been developing it on Windows 7. However, when I deploy to Windows 8, the program does not detect any serial ports.
The program finds and communicates with the device perfectly fine on Windows 7.
Now, this may seem obvious, but: Do I need to recompile my app on Windows 8 for it to work properly on Windows 8?
Are there windows 8 specific deployment DLLs?
-
QtSerialPort works fine on any Windows up XP to 8.1.
bq. However, when I deploy to Windows 8, the program does not detect any serial ports.
What type of device do you expect to find?
bq. Do I need to recompile my app on Windows 8 for it to work properly on Windows 8?
No.
bq. Are there windows 8 specific deployment DLLs?
No.
PS: Just make sure that your Application's package contains all desired runtime libraries, from Qt, MSVC/MinGW and so on.
-
I am expecting to find a generic serial device (It's a microcontroller, arduino type thing)
As I said it is found perfectly on Windows 7, but not at all on windows 8. Tested this about a dozen PCs now.
Any ideas for what could be going on?
-
bq. Any ideas for what could be going on?
-
This serial port are present in "Device Manager" of your Win8 PC?
-
Can you provide an *.inf file of your driver?
-
What version of QtSerialPort do you use? Do you build it himself or take from the Qt package?
-
-
- Yes, it does.
- The .inf is below
- I take QSerialPort from the Qt 5.3 package. I do not compile it myself.
I should emphasize that other applications besides my Qt derived application are finding the devices just fine, the app works perfectly as intended on Windows 7.
I did not make this inf, it is a common inf for arduino type devices:
Here is the files as found on my functioning Windows 7 machine:
[code]
; Windows INF to load usbser driver for all CDC-ACM USB Serial Ports
; Copyright (C) 2008 PJRC.COM, LLC.[Version]
Signature="$Windows NT$"
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
Provider=%MFGNAME%
DriverVer=01/01/2008,1.0.0.0
;CatalogFile=cdc_acm_class.cat[Manufacturer]
%MFGNAME%=DeviceList, NTamd64[DeviceList]
%DEVNAME%=DriverInstall,USB\Class_02&SubClass_02&Prot_01[DeviceList.NTamd64]
%DEVNAME%=DriverInstall,USB\Class_02&SubClass_02&Prot_01[DeviceList.NTia64]
%DEVNAME%=DriverInstall,USB\Class_02&SubClass_02&Prot_01[SourceDisksNames]
1=%CD1NAME%[SourceDisksFiles]
[DestinationDirs]
DefaultDestDir=12[DriverInstall]
Include=mdmcpq.inf
CopyFiles=FakeModemCopyFileSection
AddReg=DriverAddReg[DriverAddReg]
HKR,,EnumPropPages32,,"msports.dll,SerialPortPropPageProvider"[DriverInstall.Services]
Include=mdmcpq.inf
AddService=usbser,0x00000002,LowerFilter_Service_Inst[Strings]
MFGNAME="PJRC.COM, LLC."
DEVNAME="USB Serial (Communication Class, Abstract Control Model)"
CD1NAME="No CDROM required, usbser.sys is provided by Windows"[/code]
Now the driver I found hanging around on Windows 8, it's a little different:
[code]
; Windows INF to load usbser driver for all CDC-ACM USB Serial Ports
; Copyright (C) 2014 PJRC.COM, LLC.[Version]
Signature="$Windows NT$"
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
Provider=%MFGNAME%
DriverVer=12/12/2013,1.0.0.0
CatalogFile=cdcacm.cat[Manufacturer]
%MFGNAME%=DeviceList, NTamd64[DeviceList]
%DEVNAME%=DriverInstall,USB\Class_02&SubClass_02&Prot_01[DeviceList.NTamd64]
%DEVNAME%=DriverInstall,USB\Class_02&SubClass_02&Prot_01[DestinationDirs]
DefaultDestDir=12
DriverCopyFiles=12[DriverInstall]
Include=mdmcpq.inf
Include=msports.inf
CopyFiles=FakeModemCopyFileSection,SerialEnumerator.NT.Copy
AddReg=DriverAddReg[DriverAddReg]
HKR,,EnumPropPages32,,"msports.dll,SerialPortPropPageProvider"
HKR,,"LowerFilters",0x00010000,"usbser"
HKR,,"UpperFilters",0x00010000,"serenum"[DriverInstall.Services]
Include=mdmcpq.inf
AddService=usbser,0x00000002,UsbserService
AddService=serenum,,SerenumService[UsbserService]
ServiceType= 1
StartType = 3
ErrorControl = 0
ServiceBinary = %\usbser.sys[SerenumService]
ServiceType = 1
StartType = 3
ErrorControl = 0
ServiceBinary = %\serenum.sys
LoadOrderGroup = PNP Filter[Strings]
MFGNAME="PJRC.COM, LLC."
DEVNAME="Teensy USB Serial"[/code]
I'm not to up to date on driver definition files like this, so I'm not sure where to look for a problem.
Thanks for the help so far.
-
Hmm.. It is strange. It is one solution for this - try to build QtSerialPort and to debug manually. And only then can be see what happens..