www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Atmega8 + Visual basic

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
juref
Član
Član



Pridružen-a: Tor 15 Dec 2009 11:45
Prispevkov: 226
Aktiv.: 1.30
Kraj: Črnomelj

PrispevekObjavljeno: Ned Apr 22, 2012 10:51 pm    Naslov sporočila:  Atmega8 + Visual basic Odgovori s citatom

Pozdravljeni!

Za nalogo sem si zadal izdelati voltmeter, katerega bi vrednost odčitaval na računalniku. Program UART za Mega8 sem napisal in v terminalu deluje. Sedaj bi povezal to z Visual studio 2010 vendar mi nekako ne izpisuje ničesar (V tem sem še "vajenec Smile"), povezavo pa vzpostavim. Prosil bi če ima kdo mogoče kakšen podoben primer narejen oz. kje bi lahko takšen primer našel.

Koda v VB:
Koda:

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        SerialPort1.PortName = ComboBox1.Text
        SerialPort1.BaudRate = ComboBox2.Text
        SerialPort1.Open()
        If SerialPort1.IsOpen Then TextBox1.Text = "Povezava je vspostavljena"
        TextBox1.BackColor = Color.PaleGreen


    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        SerialPort1.Close()
        If SerialPort1.IsOpen = False Then TextBox1.Text = "Povezava je prekinjena"
        TextBox1.BackColor = Color.PaleVioletRed

    End Sub

    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        Dim meritev As String = ""
        meritev = SerialPort1.ReadLine
        TextBox2.Text = meritev


    End Sub

End Class


Najlepša hvala za odgovore ter lep dan!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
matjazkariz
Član
Član



Pridružen-a: Sre 03 Nov 2004 18:09
Prispevkov: 1026
Aktiv.: 4.62

PrispevekObjavljeno: Pon Apr 23, 2012 12:39 am    Naslov sporočila:   Odgovori s citatom

V 7 ali 8 številki revije Elektronik.si je objavljen enostaven primer programa, ki komunicira preko serial porta v VB2008. Glej članek o CAN komunikaciji - II. del.
_________________
LP, Matjaž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1712
Aktiv.: 7.71
Kraj: Ig

PrispevekObjavljeno: Pon Apr 23, 2012 7:19 am    Naslov sporočila:   Odgovori s citatom

Tako ti ne bo delovalo, saj je :
Koda:

Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        Dim meritev As String = ""
        meritev = SerialPort1.ReadLine
        TextBox2.Text = meritev


    End Sub


svoj thread. Poglej si malo o crossthreading in pa delegatih. VB in Visual C# sta precej podobna. Jaz imam v C# tako rešeno, z malce iznajdljivosti boš hitro prenesel zadevo v VB. Rabiš eno globalno spremenljivko tipa string, Private void serialPort1_datarecieved je zgoraj omenjeni thread, ki teče ločeno, label1.text je pa ena labela, ki prikazuje rezultat.



Koda:

globalno:
string RxString;

---------------------------------------------------------------------------------------------
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
            RxString = serialPort1.ReadExisting();
            this.Invoke(new EventHandler(DisplayText));
}

private void DisplayText(object sender, EventArgs e)
{
            label1.Text = RxString;
}
---------------------------------------------------------------------------------------------



LP G

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
besoft
Član
Član



Pridružen-a: Ned 01 Apr 2012 10:22
Prispevkov: 585
Aktiv.: 4.01
Kraj: Žižki - Prekmurje

PrispevekObjavljeno: Pon Apr 23, 2012 9:13 am    Naslov sporočila:   Odgovori s citatom

jaz za komunikacije uporabljam kar Office 2010 programe (Access, Excell) ...in pa komunikacijsko knjižnico Scomm32 ali Scom64. Je bistveno bolj enostano..
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
juref
Član
Član



Pridružen-a: Tor 15 Dec 2009 11:45
Prispevkov: 226
Aktiv.: 1.30
Kraj: Črnomelj

PrispevekObjavljeno: Pon Apr 23, 2012 6:28 pm    Naslov sporočila:   Odgovori s citatom

hvala vsem bom poizkusil vse. Office odpade ker bom moral za diplomo naredit podobno zahtevo ampak zdaj se bi rad vsaj osnovno naučil.
Hvala še enkrat !
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
juref
Član
Član



Pridružen-a: Tor 15 Dec 2009 11:45
Prispevkov: 226
Aktiv.: 1.30
Kraj: Črnomelj

PrispevekObjavljeno: Pon Apr 23, 2012 6:51 pm    Naslov sporočila:   Odgovori s citatom

RGorazd je napisal/a:
Tako ti ne bo delovalo, saj je :
Koda:

Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        Dim meritev As String = ""
        meritev = SerialPort1.ReadLine
        TextBox2.Text = meritev


    End Sub


svoj thread. Poglej si malo o crossthreading in pa delegatih. VB in Visual C# sta precej podobna. Jaz imam v C# tako rešeno, z malce iznajdljivosti boš hitro prenesel zadevo v VB. Rabiš eno globalno spremenljivko tipa string, Private void serialPort1_datarecieved je zgoraj omenjeni thread, ki teče ločeno, label1.text je pa ena labela, ki prikazuje rezultat.



Koda:

globalno:
string RxString;

---------------------------------------------------------------------------------------------
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
            RxString = serialPort1.ReadExisting();
            this.Invoke(new EventHandler(DisplayText));
}

private void DisplayText(object sender, EventArgs e)
{
            label1.Text = RxString;
}
---------------------------------------------------------------------------------------------



LP G


najlepša hvala! sem zadevo rešil do te mere da mi nekaj napiše hehe Very Happy no rešil sem pa po vašem primeru in po veliko sreče Razz

Koda:
    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

        meritev = SerialPort1.ReadExisting
        Invoke(New EventHandler(AddressOf displaytext))



    End Sub

    Private Sub displaytext(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click
        Label3.Text = meritev
    End Sub
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1712
Aktiv.: 7.71
Kraj: Ig

PrispevekObjavljeno: Pon Apr 23, 2012 9:43 pm    Naslov sporočila:   Odgovori s citatom

Ni problema. Tudi sam sem šel čez to in se soočal z istimi problemi.

Sicer lahko narediš po češko, tako da nekaj pošlješ na uart, malce zakasniš in potem izvedeš polling, vendar to ni to. S tem si še bolj zakompliciraš življenje.

LP G

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Tor Jun 02, 2015 9:12 pm    Naslov sporočila:   Odgovori s citatom

Zdravo

Imam neko čudno situacijo. Povezati želim PC in mega8. Naredil sem aplikacijo, v kateri imam textbox in njeno vsebino želim poslati preko com porta v mega8.
Koda:
SerialPort1.Write("01" & TextBox1.Text & vbNewLine)

Stvar pa ne deluje, kot da aplikacija nič ne pošlje v mega8. Če isti string napišem preko programa virtual terminal pa zadeva deluje Eh? Prav tako sem preko virtual terminala gledal kaj aplikacija napiše na com port in napiše pravilno.
Baud rate je nastavljen na 9600.
Koda:
SerialPort1.BaudRate = 9600
        SerialPort1.Parity = Parity.None
        SerialPort1.StopBits = StopBits.One
        SerialPort1.DataBits = 8


Sem pa skoraj 100% da ni težava v mega8
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
airwolf
Član
Član



Pridružen-a: Sre 28 Maj 2008 17:17
Prispevkov: 2053
Aktiv.: 10.65

PrispevekObjavljeno: Tor Jun 02, 2015 9:59 pm    Naslov sporočila:   Odgovori s citatom

Kaj pa če poskusiš celoten string najprej sestaviti in šele potem poslati v mego?

Koda:
dim besedilo as string
besedilo = "01" & TextBox1.Text & vbNewLine
SerialPort1.Write(besedilo)

_________________
LP Gašper
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Pet Jun 05, 2015 8:32 pm    Naslov sporočila:   Odgovori s citatom

Brez uspeha Confused
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
airwolf
Član
Član



Pridružen-a: Sre 28 Maj 2008 17:17
Prispevkov: 2053
Aktiv.: 10.65

PrispevekObjavljeno: Sob Jun 06, 2015 6:59 pm    Naslov sporočila:   Odgovori s citatom

Daj namesto vbNewLine raje vbCrLf pa poglej če to naredi razliko.
Ker vbNewLine nisem čist 100% če dejansko simulira enter.

_________________
LP Gašper
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Sob Jun 06, 2015 7:23 pm    Naslov sporočila:   Odgovori s citatom

Preizkušeno z vbNewLine in vbCrLf.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
airwolf
Član
Član



Pridružen-a: Sre 28 Maj 2008 17:17
Prispevkov: 2053
Aktiv.: 10.65

PrispevekObjavljeno: Sob Jun 06, 2015 7:37 pm    Naslov sporočila:   Odgovori s citatom

In obakrat ne deluje?
Pol sem pa počasi brez idej.
A če daš na drugo stran kabla drug računalnik podatke dobiš?
Ker serijski snifer ti pokaže samo podatke na žici, ne pa kaj dejansko na drugi strani pride ven.

_________________
LP Gašper
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Sob Jun 06, 2015 7:43 pm    Naslov sporočila:   Odgovori s citatom

Da dobim podatke na drugi strani. Tudi če podatke simuliram z virtual terminalom se čip pravilno odziva.

PS: Zdaj sem probal samo z vbCr zdaj pa deluje Shocked
Hm čudno Confused
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Krampus
Član
Član



Pridružen-a: Pon 08 Sep 2008 13:07
Prispevkov: 1826
Aktiv.: 9.64

PrispevekObjavljeno: Sob Jun 06, 2015 9:00 pm    Naslov sporočila:   Odgovori s citatom

Koda:
Constant Equivalent Description
vbCrLf Chr(13) + Chr(10) Carriage return–linefeed combination
vbCr Chr(13) Carriage return character
vbLf Chr(10) Linefeed character
vbNewLine Chr(13) + Chr(10) Platform-specific new line character; whichever is appropriate for current platform

_________________
Nisem ravno najbolj pameten na svetu, tu in tam pa imam kakšno idejo.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group