Poblema API e QTEK2020

venerdì 04 novembre 2005 - 10.48

nicolacicco Profilo | Newbie

Salve,
ho un qtek 2020 e ho realizzato in vb.net una classe tale da aprire la com a cui è associato il bluetooth(COM5) e leggere i dati che essa riceve.IL punto di partenza dell'applicazione è la chiamata della API:

Private Declare Function CreateFile Lib "coredll.dll" (ByVal lpFileName As String, ByVal dwDesiredAccess As Integer, ByVal dwShareMode As Integer, ByVal lpSecurityAttributes As Integer, ByVal dwCreationDisposition As Integer, ByVal dwFlagsAndAttributes As Integer, ByVal hTemplateFile As Integer) As IntPtr

Il probelm è proprio qui perchè la chiamata della funzione:

mhRS = CreateFile("\\.\COM" & miPort.ToString, GENERIC_ READ, 0, 0, OPEN_EXISTING, iMode, 0)

mi restituisce sempre un valore mhrs=-1 e cio mi scaturisce di conseguenza il messaggio:Unable to open COM5

Ho fatto diverse prove passando all'interno di CeateFile diversi paremetri ma il risultato nn cambia

Penso che il problema sia a monte.Puo esistere una sorta di incompatibilità tra il QTEk e le librerie che uso (coredll.dll)?Sapete indicarmi dove posso reperire maggiori informazioni?

Brainkiller Profilo | Guru

Ciao,
se non l'hai già fatto ti consiglio la lettura della reference relativa a CreateFile per Windows CE:
http://msdn.microsoft.com/library/en-us/wceobjst/html/cerefCreateFile.asp

Sia in VB6 ma anche per VB.NET e quindi anche sotto Windows CE per parlare con le porte COM è necessario usare la CreateFile come giustamente hai indicato. Anche io ho lavorato in passato in questo senso e non sono stati pochi i problmei che ho riscontrato durante lo sviluppo dell'applicazione. Infatti anche a me le varie funzioni ritornavano sempre valori di errore. Cambiando un po' i parametri alla fine sono riuscito a farlo funzionare.

Quello che ti chiedo innanzitutto è provare a fare delle prove su cose di cui sei certo. Esempio sei certo che la COM5 sia quella corretta ? Se hai una certezza per esempio anche sul PC locale che la COM1 sia funzionante, creati un esempio tipo su Windows Form classica utilizzando la CraeteFile che apra la porta COM1 locale così almeno dai per scontato che i parametri della API siano funzionanti e che quindi il problema sta altrove.

Riguardo la compatibilità non credo ci siano proprio problemi. dalla documentazione al link che ti ho fornito noterai che la API CreateFile è compatibile Windows CE quindi con qualunque versione di Pocket PC.
Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

nicolacicco Profilo | Newbie

Ciao David,

grazie per l'nformazione,alla fine ci sono riuscito utilizzando la seguente api (leggermente diversa dalla prima):

<DllImport("coredll.dll")> _
Private Shared Function CreateFile(ByVal lpFileName As String, ByVal dwDesiredAccess As Integer, ByVal dwShareMode As Integer, ByVal lpSecurityAttributes As Integer, ByVal dwCreationDisposition As Integer, ByVal dwFlagsAndAttributes As Integer, ByVal hTemplateFile As Integer) As Integer
End Function

Le differenze con il primo caso sono : la prima CreateFile termina con un "AS IntPtr" questa invece termina con "AS Integer" ; nel campo GENERIC_READ gli passavo il valore &H80000000 ora gli passo &HC0000000.

Ho visto che nel sito di MSDN ci sono poi tutte leAPI,questa è un'altra cosa che cercavo

Grazie Ciao

niky

Brainkiller Profilo | Guru

>Ho visto che nel sito di MSDN ci sono poi tutte leAPI,questa
> è un'altra cosa che cercavo

E' abbastanza normale :) Uno dei pregi di Microsoft è che per ogni tecnologia che studia ed implementa rilascia il relativo SDK che contiene le librerie e la documentazione delle API nuove. su MSDN trovi naturalmente gli SDK di tutte le tecnologie con tutte le API disponibili. Un programmatore su sistemi operativi Microsoft non può non usare l'MSDN.
Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5