Hallo,
Ik heb in JAL (Just Another Language) o.b.v. het boek van Bert Van Dam van elektor een programma gemaakt voor PIC18F4550. Het programma stuurt de analoge waarden door via usb met RS232 emulatie. (CDC RS232 emulation demo)
De gegevens ontvangen (en verzenden) verloopt probleemloos via HyperTerm.
Nu wou ik hiervoor een programma maken in Visual basic. Ik heb reeds programma's gemaakt om via de gewone COM poort te communiceren met PIC's, maar als ik dit hiervoor op dezelfde manier doe, werkt het niet.
Wat moet er hiervoor anders gedaan worden?
Of wat moet ik in Visual Basic als instellingen gebruiken (zoals bv. de baud rate: in HyperTerm maakt het niet uit wat je daarvoor invult)
Met vriendelijke groeten,
Tom Bleeser
Op 31 augustus 2016 17:57:05 schreef elektronica:
Nu wou ik hiervoor een programma maken in Visual basic. Ik heb reeds programma's gemaakt om via de gewone COM poort te communiceren met PIC's, maar als ik dit hiervoor op dezelfde manier doe, werkt het niet.
Als je het al een keer werkend gehad hebt via Visual basic over je compoort, dan zou je het via een Max232 kunnen doen. Maar dan moet je wel je programma iets aanpassen en bijv. RSin_Pin en RSout_Pin of Hserin en Hserout gebruiken. Ik weet alleen het commando niet voor JAL.
Ik heb mij misschien verkeerd uitgedrukt, maar wat ik bedoelde is:
-Situatie 1: Wat ik werkende gehad heb, was communicatie via de échte fysieke COM poort van mijn pc (via visual basic) en de PIC. Dit was inderdaad met een MAX232.
-Situatie 2: Wat ik nu wil doen is om de PIC via usb te laten communiceren met mijn pc. Het programma in de PIC is in orde, als ik de PIC insteek in de pc, zie ik een extra virtuele COM poort staan (COM7). Wanneer ik op mijn pc het programma HyperTerm gebruik, kan ik vlekkeloos communiceren met de PIC.
Wat ik nu wil doen is HyperTerm vervangen door een zelfgemaakt programma in Visual basic. Wanneer ik hiervoor hetzelfde Visual basic programma gebruik als in situatie 1 (en dan COM7 selecteer), werkt dit niet. Wat moet ik hiervoor aanpassen in de instellingen van visual basic?
En wat is bijvoorbeeld de baud rate die ik daarvoor in visual basic moet gebruiken? In Hyperterm maakt het niet uit welke baudrate je kiest.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Op 31 augustus 2016 19:43:05 schreef elektronica:
-Situatie 1: Wat ik werkende gehad heb, was communicatie via de échte fysieke COM poort van mijn pc (via visual basic) en de PIC. Dit was inderdaad met een MAX232.
Dit heb ik dan verkeerd begrepen. 
Wat ik nu wil doen is HyperTerm vervangen door een zelfgemaakt programma in Visual basic. Wanneer ik hiervoor hetzelfde Visual basic programma gebruik als in situatie 1 (en dan COM7 selecteer), werkt dit niet. Wat moet ik hiervoor aanpassen in de instellingen van visual basic?
Moet je dan niet gewoon een USB protocol maken in VB?
Progger
GMT+1
voor VB zal de baudrate ook niet heel veel uitmaken.
als het goed is weet VB helemaal niet welke hardware er aan een poort zit, VB praat gewoon tegen een device. en of dat dat op een PCI of USB bus zit wil je helemaal niet weten.
maar als je VB6.0 of een oude vb.net kan het zijn dat je component er niet mee overweg kan. dan kan je opzoek naar een modern component, ofdirect de windows api's moeten gebruiken, of een nieuwere omgeving moeten vinden.
welke windows versie gebruik je, welke VB versie, en welk component.. (mscomm kan je sowieso vergeten)
[Bericht gewijzigd door Progger op (10%)]
Ik gebruik visual basic 2008 express edition.
Bij apparaatbeheer staat COM7 (de virtuele) gewoon bij COM1 en COM2 (de fysieke COM poorten). Maakt het voor visual basic dan toch zoveel verschil of het een virtuele of fysieke COM is?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Oudere software kan vaak direct alleen met 'echte' COM poorten werken. Virtuele kan wel, via de Windows API's
Progger
GMT+1
dat is een lastige.
vertel eerst eens hoe je nu werkt. welk object roep je aan?
probeer dit voorbeeld project eens:
https://code.msdn.microsoft.com/windowsdesktop/COM-Port-Sample-0c3f254…
[Bericht gewijzigd door Progger op (48%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Dat gaat met o.a. CreateFile/ReadFile/WriteFile, zie: https://strokescribe.com/en/serial-port-vb-winapi.html
Bedankt, ik zal het straks eens uitproberen.
Hoe ik het nu doe is door in visual basic in de grafische interface te kiezen voor "SerialPort". En dan moet je enkel nog baudrate enzo instellen. Dat werkte perfect met de echte fysieke COM poort.
buckfast_beekeeper
Van Lambiek wordt goede geuze gemaakt.
Wat als je de oude configuratie gebruikt maar ipv de vaste com poort een FTDI USB-serial omzetter. Bijvoorbeeld deze.
Dat werkt, progger! Bedankt!
Alleen heb ik nog niet helemaal begrepen hoe je gegevens moet ontvangen. Nu doe ik dit:
aant = CommPort.Read(3)
Dim a() As Byte
a = CommPort.InputStream
For teller = 0 To a.Length - 1
TextBox2.Text = TextBox2.Text & a(teller) & " "
Next
CommPort.ClearInputBuffer()
Hoe kan ik de volledige input buffer inlezen?
Roland van Leusden
It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.
Dat doe je al.
For teller = 0 To a.Length - 1 => a.Length is de hoeveelheid karakters die in je input buffer zitten.
In dat visual basic project zat al een timer voor gegevens van een modem te ontvangen, maar daarmee kan je ook gewoon gegevens ontvangen. Dat had ik nog niet gezien.
Dan werkt alles wat ik wou doen!
Enorm bedankt allemaal!!