Simpel RS232 VB(A)<->PIC. Komplicerat?
Simpel RS232 VB(A)<->PIC. Komplicerat?
Jag kan börja med att varna för att min fråga här snarare rör VB-programering än PIC så om tråden passar bättre i till exempel "Övrigt" så är det bara att flytta.
Det jag vill åstadkomma är lite kommunikation mellan PC och PIC över RS232. Kan i princip ingenting om VB-programering men jag håller på att lär mig så smått. Framförallt tycker jag att det är trevligt att Hin Onde (Microsoft) integrerat VB i till exempel Excel, som man faktiskt kan göra en hel del nyttiga spreadsheets i. Har dock förstått att VBA (VB for Application) är en något bantad version av "vanliga" VB.
För att börja experimentera med det här så tänkte jag först att jag skulle försöka sända över lite enkla data (kanske bara 2-3 byte) från VBA till en mottagande PIC. Hur svårt är detta egentligen?
När jag googlat så har jag för det mesta stött på påståenden som att "det är extremt svårt utan extern mjukvara eller dyrköpta bibliotek". Detta budskapet kommer väl i och för sig främst från tillverkare av dessa och deras anställda.
Men vad säger ni som kan det här? Är det knepigt? Som sagt så är det väldigt enkla data jag tänkt skicka och, till en början, enkelriktad kommunikation det rör sig om.
Tackar!
/Tottish
Det jag vill åstadkomma är lite kommunikation mellan PC och PIC över RS232. Kan i princip ingenting om VB-programering men jag håller på att lär mig så smått. Framförallt tycker jag att det är trevligt att Hin Onde (Microsoft) integrerat VB i till exempel Excel, som man faktiskt kan göra en hel del nyttiga spreadsheets i. Har dock förstått att VBA (VB for Application) är en något bantad version av "vanliga" VB.
För att börja experimentera med det här så tänkte jag först att jag skulle försöka sända över lite enkla data (kanske bara 2-3 byte) från VBA till en mottagande PIC. Hur svårt är detta egentligen?
När jag googlat så har jag för det mesta stött på påståenden som att "det är extremt svårt utan extern mjukvara eller dyrköpta bibliotek". Detta budskapet kommer väl i och för sig främst från tillverkare av dessa och deras anställda.
Men vad säger ni som kan det här? Är det knepigt? Som sagt så är det väldigt enkla data jag tänkt skicka och, till en början, enkelriktad kommunikation det rör sig om.
Tackar!
/Tottish
-
- EF Sponsor
- Inlägg: 2109
- Blev medlem: 27 augusti 2005, 20:57:58
- Ort: Borlänge
OK. Tack pirateboy. Kanske tar en kik på det men det är just att kunna skicka data "från ett excel-ark" till PICen (och vice versa) som jag tror skulle kunna öppna stora möjligheter att göra nyttiga applikationer på ett effektivt sätt för mig. Kanske går att anropa någon C#-applikation från Excel och ta det den vägen men det verkar onödigt krångligt, beroende på hur svårt det här med RS232 från VBA visar sig vara, förstås.
/Tottish
/Tottish
Det finns en ActiveX kontroll som heter MSComm32.ocx för att hantera serieporten, om den går att använda i VBA vet jag ej.
Ett annat sätt kan vara att anropa Windows API, vet ej om detta fungerar från VBA heller.
Det borde vara relativt enkelt att skapa ett program i VB Express, som för övrigt är gratis, som skriver till en *.xls fil, se länk nedan
http://msdn2.microsoft.com/en-us/express/default.aspx
Ett annat sätt kan vara att anropa Windows API, vet ej om detta fungerar från VBA heller.
Det borde vara relativt enkelt att skapa ett program i VB Express, som för övrigt är gratis, som skriver till en *.xls fil, se länk nedan
http://msdn2.microsoft.com/en-us/express/default.aspx
Det borde inte vara några problem...
Lägg till en userform...
Högerklick på 'verktygslådan' --> fler kontroller...
Leta upp MsComm32.ocx (Micrsoft communications controller...)
Lägg till en MsComm kontroll på userformen (ser ut som en telefon)
För att skicka data använder du t.ex
Mscomm1.PortOpen = True
MsComm1.Output = chr(100)
MsComm1.PortOpen = False
Detta skickar värdet '100'
Lägg till en userform...
Högerklick på 'verktygslådan' --> fler kontroller...
Leta upp MsComm32.ocx (Micrsoft communications controller...)
Lägg till en MsComm kontroll på userformen (ser ut som en telefon)
För att skicka data använder du t.ex
Mscomm1.PortOpen = True
MsComm1.Output = chr(100)
MsComm1.PortOpen = False
Detta skickar värdet '100'
OK, då får vi väl hoppas att det går att stuva ner MsComm32.ocx i verktygslådan och sen kunna köra på som man skulle gjort i VB. Undrar om det finns något enkelt sätt att skicka "bitar" från VB via RS232? Säg att man till exempel vill sända h'F6'...
Får väl läsa på lite om VB och försöka få det att fungera med VB Express (tack för det tipset!) först och sen försöka göra exakt samma sak i VBA. Borde bli lättast att felsöka då.
Tack för hjälpen, allihop! Fyll gärna på om ni har lite info som skulle kunna gagna mitt syfte.
MVH
/Tottish
Får väl läsa på lite om VB och försöka få det att fungera med VB Express (tack för det tipset!) först och sen försöka göra exakt samma sak i VBA. Borde bli lättast att felsöka då.
Tack för hjälpen, allihop! Fyll gärna på om ni har lite info som skulle kunna gagna mitt syfte.
MVH
/Tottish
Hej,
Här en ganska 'basic' tutorial för kommunikaton mellan VB och en mikrokontroller. Dom använder VB6 och MSComm32 vilket nog är det närmsta VBA man kan komma. Efter VB6 to MS bort möjligheten att på ett enkelt sätt kommunicera med COM-porten ända till VB2005 kom. Har aldrig använt MSComm med VBA men det borde väl funka.
/H.O
Här en ganska 'basic' tutorial för kommunikaton mellan VB och en mikrokontroller. Dom använder VB6 och MSComm32 vilket nog är det närmsta VBA man kan komma. Efter VB6 to MS bort möjligheten att på ett enkelt sätt kommunicera med COM-porten ända till VB2005 kom. Har aldrig använt MSComm med VBA men det borde väl funka.
/H.O
> skicka "bitar" från VB via RS232? Säg att man till exempel vill sända h'F6'...
*Måste* du göra det ?
Generellt sätt är det enklare att hålla sig till "skrivbara" tecken.
T.ex att skicka "F" och "6" som vanliga ASCII tecken. Sedan tar man hand
om konverteringen i varje ände. Bl.a blir det mycket enklare att testa
kommunikation med t.ex en vanlig terminalemulator (Hyperterm eller likn.)
eftersom man kan skriva (och läsa!) hela kommunikationen i klartext.
*Måste* du göra det ?
Generellt sätt är det enklare att hålla sig till "skrivbara" tecken.
T.ex att skicka "F" och "6" som vanliga ASCII tecken. Sedan tar man hand
om konverteringen i varje ände. Bl.a blir det mycket enklare att testa
kommunikation med t.ex en vanlig terminalemulator (Hyperterm eller likn.)
eftersom man kan skriva (och läsa!) hela kommunikationen i klartext.
H.O: Tack! ska kolla in den och så får vi se om det funkar med VBA. Hur tror du att det funkar med VB Express som jag nyss installerat efter ett tidigare tips? Med tanke på det du skrev om att enkel COM-ports-åtkomst førsvann en tid, menar jag. Ær VB Express tillræckligt ny (eller gammal)?
Sodjan: Nja, det måste jag væl inte. Det var mest att jag tænkte, i mitt førsta projekt med RS232, skicka øver rena "Scan-Codes" (AT / PS/2) till PICen. Så kunde jag lagra den databyten jag fick från PCn i PICen før att sedan sænda samma byte till PS/2-tangentbordsporten (på samma eller en annan PC) med min hemmasnickrade, och faktiskt fungerande, tangentbordsemulator.
Men om du tror att det ær bættre att skicka typ, ASCII-tecken (till PICen) och anvænda ett "smart" PIC-program som tolkar innehållet i den mottagna datan, istællet før att helt blint lagra den, så ær jag fullt beredd att testa det konceptet istællet. Idag så vill jag ju lægga mer krut på PIC-programering æn något annat så det ær væl det bæsta alternativet.
Så då ska jag alltså skriva ett program som øversætter ASCII-koder till AT-ScanCodes. Att kunna felsøka med till exempel Hyperterminalen ær ju inte heller fel. Det ær førsta gången som jag jobbar med asynkron seriell dataøverføring så det borde vara så lætt som møjligt att felsøka.
Tack igen gott folk!
/Tottish
Sodjan: Nja, det måste jag væl inte. Det var mest att jag tænkte, i mitt førsta projekt med RS232, skicka øver rena "Scan-Codes" (AT / PS/2) till PICen. Så kunde jag lagra den databyten jag fick från PCn i PICen før att sedan sænda samma byte till PS/2-tangentbordsporten (på samma eller en annan PC) med min hemmasnickrade, och faktiskt fungerande, tangentbordsemulator.
Men om du tror att det ær bættre att skicka typ, ASCII-tecken (till PICen) och anvænda ett "smart" PIC-program som tolkar innehållet i den mottagna datan, istællet før att helt blint lagra den, så ær jag fullt beredd att testa det konceptet istællet. Idag så vill jag ju lægga mer krut på PIC-programering æn något annat så det ær væl det bæsta alternativet.
Så då ska jag alltså skriva ett program som øversætter ASCII-koder till AT-ScanCodes. Att kunna felsøka med till exempel Hyperterminalen ær ju inte heller fel. Det ær førsta gången som jag jobbar med asynkron seriell dataøverføring så det borde vara så lætt som møjligt att felsøka.
Tack igen gott folk!
/Tottish
Ja, så kan man ju se på det men om vi tar PIC-koden så ska den ju øversætta två bytes som den tar emot. Till exempel ASCII koden før "F" och "6" kommer in och PICen ska då lagra h'F6' i læmpligt register.
Då har den ju faktiskt øversatt det till en "ScanCode".
Eller har jag missat något i ditt resonemang hær?
Då har den ju faktiskt øversatt det till en "ScanCode".
Eller har jag missat något i ditt resonemang hær?
Express-versionen har återfått "inbyggt" stöd för RS232 kommunikation. Du hittar den i "verktygslådan" under Components / Serial Port. Men som sagt, räkna inte med du gör i VB 2005 (Express) funkar rakt av i VBA.
Det går också att "prata" med Excel direkt från VB2005, allt man kan göra i Excel kan man också göra från andra applikationer.
/H.O
Det går också att "prata" med Excel direkt från VB2005, allt man kan göra i Excel kan man också göra från andra applikationer.
/H.O
Jag gjorde ett simpelt "terminal-program" i Excel kommunicerade PIC-kretsar och även med en Palm-pilot med ett annat terminalprogram.
Skrivet i VBA för Excel med hjälp av XMCommCRC.
Kolla på:
http://www.jbgizmo.com/page29.htm
http://home.comcast.net/~hardandsoftware/Downloads.htm
http://home.comcast.net/~hardandsoftware/xmcomm.htm
Skrivet i VBA för Excel med hjälp av XMCommCRC.
Kolla på:
http://www.jbgizmo.com/page29.htm
http://home.comcast.net/~hardandsoftware/Downloads.htm
http://home.comcast.net/~hardandsoftware/xmcomm.htm
Tack før de lænkarna persika. Verkar ju vara precis vad jag letat efter. Lite konstigt att han gør en ActiveX-kontroller som innehåller ett verktyg (MSComm32.ocx) som man bara får med vissa VB-versioner bara før att han "wanted to make MSComm features available to non-VB5/VB6 Professional or Enterprise edition users". Låter ju lite lurigt, men han vet sækerligen vad han håller på med.
Man kanske skulle børja brænna ut Wndows-skivor och lægga dom i en hembyggd førpackning och skylla på att man "wanted to make MSPaint features available to non-XP supporters". =)
/Tottish
Man kanske skulle børja brænna ut Wndows-skivor och lægga dom i en hembyggd førpackning och skylla på att man "wanted to make MSPaint features available to non-XP supporters". =)
/Tottish
Senast redigerad av Tottish 8 oktober 2007, 08:41:07, redigerad totalt 2 gånger.