begin process at 2012 02 17 10:26:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

General

 > 

Coredll pour envoyer du binaire au GPS


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Coredll pour envoyer du binaire au GPS

jeudi 20 décembre 2007 à 12:54:04 | Coredll pour envoyer du binaire au GPS

xyp

Bonjour,

J'ai besoin d'inclure une routine permettant de switcher un GPS du mode Sirf3 au mode NMEA 2.0

Le blem c'est que le MSComm semble bugué et  n'envoie rien en binaire. MS est au courant et propose un correctif. Or lorsque je l'inclu dans mon code, ça me marque alors que le fichier coredll.dll est absent. C'est faux : il est bien présent dans le répertoire system32 de Windows, mais quand j'essai de l'inclure comme référence au programme, ça ne veut pas.

Je vous file le code. Qu'en pensez vous ?

Merci beaucoup pour votre aide.

XYP

Objets nécessaires :
1 Module nommé Moduleee1
1 Form nommée Form1
1 MSComm nommé  Comm1, sur la Form1
1 boutton nommé  Command1, sur la Form1


Code dans Module 1:

Option Explicit
Declare Function WriteFileL Lib "coredll" Alias "WriteFile" _
(ByVal hFile As Long, lpBuffer As Byte, ByVal nNumberOfBytesToWrite As Long, _
lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long

Public Sub SendArrayData(ByVal hCommID As Long, baData)
Dim i, lRet, iWrite
For i = LBound(baData) To UBound(baData)
    lRet = WriteFileL(hCommID, baData(i), 1, iWrite, 0)
Next
End Sub

Code dans Form 1 (La série de code hexa est la commande de switch du mode swirf3 au mode NMEA2.0) :

Private Sub Command1_Click()

' Set up the "Switch to NMEA" command
Dim Command(32) As Byte
Command(1) = &HA0
Command(2) = &HA2
Command(3) = &H0
Command(4) = &H18
Command(5) = &H81
Command(6) = &H2
Command(7) = &H1
Command(8) = &H1
Command(9) = &H0
Command(10) = &H1
Command(11) = &H5
Command(12) = &H1
Command(13) = &H5
Command(14) = &H1
Command(15) = &H0
Command(16) = &H1
Command(17) = &H0
Command(18) = &H1
Command(19) = &H0
Command(20) = &H1
Command(21) = &H0
Command(22) = &H1
Command(23) = &H0
Command(24) = &H1
Command(25) = &H0
Command(26) = &H1
Command(27) = &H12
Command(28) = &HC0
Command(29) = &H1
Command(30) = &H6A
Command(31) = &HB0
Command(32) = &HB3

' Configure the comm port
Comm1.InputLen = 0
Comm1.InputMode = comInputModeText
Comm1.RThreshold = 1
Comm1.SThreshold = 1
Comm1.CommPort = 8

'Assume the GPS is connected to COM1:
Comm1.Settings = "38400,N,8,1" 'Assume the GPS is in SiRF mode

'Send the command
Comm1.PortOpen = True
   SendArrayData Comm1.CommID, Command
Comm1.PortOpen = False
End Sub

jeudi 20 décembre 2007 à 13:51:07 | Re : Coredll pour envoyer du binaire au GPS

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour

CodeDll.dll c'est pour les PPC ?
Il me semble, je peux me tromper, que WriteFile est présente dans Kernel32.dll, elle sera peut-être plus à même de répondre à ton besoin.

Ta fonction
Public Sub SendArrayData(ByVal hCommID As Long, baData)
Dim i, lRet, iWrite
For i = LBound(baData) To UBound(baData)
    lRet = WriteFileL(hCommID, baData(i), 1, iWrite, 0)
Next
End Sub

sera fonctionnelle (enfin je pense) comme cela :
Public Sub SendArrayData(ByVal hCommID As Long, baData)
    Dim lRes as integer,iWrite as integer
    lRet = WriteFileL(hCommID, baData(1), UBound(baData), iWrite, 0)
End Sub


Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
jeudi 20 décembre 2007 à 14:03:24 | Re : Coredll pour envoyer du binaire au GPS

xyp

Salut,

Suivant ton conseil, j'ai remplacé coredll dans  le module par kernel32... comme ceci :

Declare Function WriteFileL Lib "kernel32" Alias "WriteFile" _
(ByVal hFile As Long, lpBuffer As Byte, ByVal nNumberOfBytesToWrite As Long, _
lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long

le blem c'est que ça me provoque une erreur qui ferme VB6 : AppName: vb6.exe AppVer: 6.0.81.76 ModName: unknown ModVer: 0.0.0.0 Offset: ff30ff00

J'ai remplacé aussi la fonction par celle que tu me files, mais ça provoque une erreur de compilation "Type d'argument ByRef incompatible" sur iwrite.

Qu'en pensez vous ?
Merci beaucoup pour votre aide.
jeudi 20 décembre 2007 à 14:22:29 | Re : Coredll pour envoyer du binaire au GPS

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour

Voici la déclaration de la fonction :
Public Declare Function WriteFile Lib "kernel32" Alias "WriteFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As OVERLAPPED) As Long
Pas de Byval pour lpOverlapped.

Normal, met IWrite en Long au lieu de Integer.



Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
jeudi 20 décembre 2007 à 15:59:17 | Re : Coredll pour envoyer du binaire au GPS

xyp

Euh le type Overlapped, il ne connait pas dans "(...) lpOverlapped As OVERLAPPED (...)"
As-tu une idée ?

Merci beaucoup pour ton aide.

jeudi 20 décembre 2007 à 16:15:19 | Re : Coredll pour envoyer du binaire au GPS

xyp

Remarque c'est ptet moi qui ait mal compris.
En fait au lancement ça me marque "type défini par l'utilisateur non défini" sur cette même ligne.

Merci, et désolé de t'embeter pour cela.
jeudi 20 décembre 2007 à 16:15:59 | Re : Coredll pour envoyer du binaire au GPS

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour

Public Type OVERLAPPED
        Internal As Long
        InternalHigh As Long
        offset As Long
        OffsetHigh As Long
        hEvent As Long
End Type

Je pense qu'en mettant 0 dans toutes les valeurs, ça devrait être bon, mais je n'utilise plus cette fonction depuis un moment.

Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
jeudi 20 décembre 2007 à 16:22:30 | Re : Coredll pour envoyer du binaire au GPS

xyp

Dans ce cas, est-ce qu'il faut modifier la ligne :
WriteFile(hCommID, baData(i), 1, iWrite, 0) ?

Parce que le 0 à la fin ne lui convient plus.

Merci beaucoup pour ta patience.
jeudi 20 décembre 2007 à 16:41:14 | Re : Coredll pour envoyer du binaire au GPS

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour

Non je pensais plutot à :
dim lVar as Overlapped
lVar.Internal=0
lVar.---=0

Puis WriteFile(..., lVar)

Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
jeudi 20 décembre 2007 à 16:57:10 | Re : Coredll pour envoyer du binaire au GPS

xyp

Ok le compilateur n'indique plus d'erreur, donc apparement ça envoit des donénes en binaire au GPS, ce que je cherchais à faire.
Mais bon ça switch pas pour autan entre le mode sirf3 et le mode nmea2.0, ce qui démontre que y'a un bug ailleurs, et je m'y penche ;)

Dès que j'ai trouvé, je ferai une ptite source pour indiquer comment switcher entre les deux moe à loisir.

Encore merci NHenry et fait de ma part une caresse au gros chat qui pose avec toi sur la photo ;)

a++


1 2

Cette discussion est classée dans : long, gps, mode, h1command, h0command


Répondre à ce message

Sujets en rapport avec ce message

appel de DLL écrite en C [ par laet ] Bonjour,J'ai un problème d'appel de DLL écrite en C, dans mon code en VB. pourriez vous m'aider ? ? ? Voici mon message d'erreur quand j'exécute mon V Unbound DBGRID [ par Pat ] Salut, j'utilise un dbgrid en mode Unbound et j'ai mis un boutton Annuler au cas où un usager veut annuler ses modifications. Lorsqu' il ajoute une isWindow repond toujours non ! [ par zoup ] Bonjour,Le code suivant repond toujours non bienque le programme lancé par shell soit ouvert.Y a t il une erreur?je suis sous NT4 SP4 et VB6 SP3.voici Executer un prog en mode exclusif [ par bs95 ] Tout d'abord je voulias vous dire que votre site est genialVoici le fichier batch suivant :****************Mono.exeif exist Ok.tst goto endbtrieve /p: VB6 ef FTP [ par Mikey ] Comment envoyer un fichier par FTP en mode ASCII grâce à VB?J'utilise le composant Inet avec la fonction Execute FTPURL,"SEND file1 file2" mais le fic enregistrement trop long [ par Sandrine ] J'ai une table XXX qui contient environ 70 observations.Et une autre table YYY vide, avec pour seul champ une clé primaire.Je veux transformer les 70 bureau au 1er plan [ par frankie ] je désire écrire une petite appli qui, quelques que soient les fenêtres ouvertes, fasse apparaitre au 1er plan le bureau.Quelqu'un sait il pourquoi le Traduire un code VB en VB Script pour une page ASP ou comment utiliser une fonction inclue dans un dll ? [ par Gbrissot ] Traduire un code VB en VB Script pour une page ASP du code suivant ou comment utiliser une fonction inclue dans un dll ?Declare Function wu_GetUserNam Afficher DataReport de VB6 en mode paysage [ par Gbrissot ] Bonjour,j'aimerais savoir si il est possible à partir du DataReport disponible dans VB6 de faire des DataReport au format paysage.Pourriez vous m'aide RGB HEX et long nombre [ par ebwm ] bonjourquand on fait un source.backcolor (par exemple) on obtient un nombre du genre 9459964, comment convertir ce nombre en RGB ou HEX (rgb(252,84,14


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,026 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales