DLL comunicazione seriale

martedì 19 ottobre 2010 - 18.41
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows 7  |  Windows XP  |  Visual Studio 2010  |  Visual Studio 2008  |  Visual Studio Express  |  MySQL 5.1  |  Access (.mdb)  |  Office 2007  |  Chrome  |  Safari  |  Firefox  |  Javascript  |  CSS 2.1  |  CSS 3.0  |  HTML 4.01

lucagian67 Profilo | Newbie

Ciao, premetto che sono alle prime armi e sono ormai disperato.
Devo fare un'applicazione dalla quale mi devo collegare a due apparati in seriale.
La casa che produce gli apparati mi ha dato una DLL per accedervi. Riesco a importare la dll con la Public Declare Function nomefunc Lib "nome.dll" ( ecc... ) ed accedere alle funzioni della dll. Per capirci meglio vi indico quali sono le funzioni della dll: ApreCom (apertura connessione), TxDati(trasmette dati e riceve risposta.
Ora se uso ApriCon e apro la connessione sulla com1 (verso il primo apparato) quando chiamo la TxDati vado a trasmettere e ricevere risposta dall'apparecchio connesso.
Ma siccome devo aprire le due connessioni contemporaneamente e inviare e ricevere risposta da entrambi le com (com1 e com3), come posso fare avendo a disposizione un unica funzione?
Io pensavo alla possibilità di duplicare la funzione, ma non riesco a trovare il modo?
Conto tanto su una vostra idea, non so più come fare. Grazie ciao

luigidibiasi Profilo | Guru

>La casa che produce gli apparati mi ha dato una DLL per accedervi.
>Riesco a importare la dll con la Public Declare Function nomefunc
>Lib "nome.dll" ( ecc... ) ed accedere alle funzioni della dll.
>Per capirci meglio vi indico quali sono le funzioni della dll:
>ApreCom (apertura connessione), TxDati(trasmette dati e riceve
>risposta.

Dobbiamo capire essenzialmente se la funzione ApreCom ti restituisce un Handler alla risorsa che stai usando oppure se TxDati ti richiede la porta dove trasmettere. In entrambi i casi negativi dobbiamo capire se esiste una ulteriore funzione che 'pilota la dll' e gli fa usare la com che desideri...

>Ora se uso ApriCon e apro la connessione sulla com1 (verso il
>primo apparato) quando chiamo la TxDati vado a trasmettere e
>ricevere risposta dall'apparecchio connesso.
La DLL che usi non ti chiede nulla oltre che la COM da aprire?

Dovresti incollare almeno le firme delle funzioni nella DLL così possiamo farci un'idea migliore
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/

lucagian67 Profilo | Newbie

Ciao ti ringrazio in anticipo della disponibilità, ti posso dare tutto quello che ho, la header della dll e la dll in allegato.
Quando apro la comunicazione con la funzione OpenCnc() posso indicare i parametri tra cui la porta di comunicazione.
Per chiarezza ti indico qui di seguito le funzioni che uso:
Public Declare Function OpenCnc Lib "ComCnc.dll" (ByVal Com As Integer, ByVal CncType As Integer, ByVal Mode As Integer, ByVal Deb As Integer) As Integer
Public Declare Function CloseCnc Lib "ComCnc.dll" () As Integer
Public Declare Function TxCnc Lib "ComCnc.dll" (ByVal Command As String, ByVal Response As String) As Integer
Public Declare Function SetProtocol Lib "ComCnc.dll" (ByVal NewMode As Integer) As Integer
Allego file zip con documentazione dll.

Ringrazio di nuovo, ciao

luigidibiasi Profilo | Guru

>Quando apro la comunicazione con la funzione OpenCnc() posso
>indicare i parametri tra cui la porta di comunicazione.
Ho letto la guida e credo di capire che più apparati vanno collegati insieme tramite una sorta di 'bus' (una periferica fornita come accessorio supplementare?) oppure tramite Rs422 (quindi presumo collegate alla stessa seriale rs422 in modalità broadcast o qualcosa di simile)

>Per chiarezza ti indico qui di seguito le funzioni che uso:
>Public Declare Function OpenCnc Lib "ComCnc.dll" (ByVal Com As
>Integer, ByVal CncType As Integer, ByVal Mode As Integer, ByVal
>Deb As Integer) As Integer
Mi sembra di capire che se lanci due volte al OpenCnc, anche scrivendo due programmi diversi che però referenziano la stessa DLL, la prima chiamata va a buon fine mentre la seconda no (la dll è shared tra i due programmi)? Fai questa prova e vedi se ti ritorna errore.

Purtroppo sei vincolato alla DLL che hanno implementato... credo tu debba usare le periferiche che loro ti indicano come compatibili...

Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
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