ATtiny13 bzw COM-Port Daten auslesen?!

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von n1nja.

    ATtiny13 bzw COM-Port Daten auslesen?!

    Hallo Leute...

    Hatte mal langeweile und hab endlich mal das Lernpaket von MSR ausprobiert, das ich zu Weihnachten bekommen habe... Ja jetzt erst:)
    In den Lernpaket sind bereits vorhande Projekte drinnen um Widerstände, Spannung etc anzeigen zu lassen!

    Das sind allerdings VB6 Projekte, die greifen alle auf eine RSCOM.pas zu bzw eine RSCOM.dll...
    In den Projekten sind auch nur kurze SourceCodes drinne so das ich da null verstehe!

    Die DLL in ein VB.NET Programm habe ich versucht, leider wird mir ein Fehler angezeigt ( wahrscheinlich weil sie in VB6 geschrieben ist )

    Jetzt wollte ich anfangen die DLL zu übersetzen bis ich gesehen habe das sie mehrere hunderte Zeilen hat!
    Weiß vllt jemand was über diese DLL?!

    Wie kann ich herausfinden was diese für Funktionen hat bzw im Buch steht das sie alles über API Aufrufe macht!
    Gibt es gute Tuts oder ne Seite wo man sowas nachlesen kann, hab leider bis jetzt nichts gefunden!

    Wäre über ne Antwort sehr dankbar!
    @n1nja: Probier doch mal und poste mal eine dieser Routinen oder ggf. eine ganze Klasse, dann werden wir sehen.
    Was für ein Fehleer kommt dort?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich kann die DLL gar nicht einbinden! IDE mäckert da!
    Ich hab es gestern immerhin geschafft die Eingaänge zu überprüfen ob Durchgang ist!
    DtsHolding etc!
    Jetzt möchte ich gerne den Pin auslesen!
    Wenn so ist wie mit Bytes aus den Stream lesen dann bleibt er ewig in der Schleife hängen und passiert nix!

    Werde Nachmittag mal Screenshots machen vom Buch da sind Funktionen drin! Allerdings in Delphi:)

    Die RSCOM.dll ruft dann diese auf!
    In der DLL stehen also nur API Aufrufe die auf die RSCOM.pas zugreifen!

    Solang ich weiß wie man zb das Auslesen kann was in den VB6 Projekten angezeigt zumindest irgendeinWert bin ich schon zufrieden:)
    Offensichtlich ist das keine .NET-DLL, die musste einbinden wie API-Funktionen.
    Was genau klappt nicht?
    Warum steigst Du nicht um auf SerialPort? Kannste im Designer auf die Form ziehen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also ich arbeite ja die ganze Zeit schon mit IO.Ports.SerialPort...
    Hatte ja auch geschrieben die Eingänge kann ich auslesen ob Durchgang besteht (zb... DsrHolding)!

    Jetzt meine Frage ist wie kann ich irgendwelche Werte von einer Leitung erfassen?!

    Ich hab hier jetzt mal nen Schaltplan kurz zur Erläuterung gemacht (nicht mein bester):
    dl.dropbox.com/u/12950467/schaltplan.png

    Links die 3 Anschlüsse sind die am SerialPort is ja klar!
    Der Kreis ist eine Fotodiode (um Helligkeit zu messen)
    Daneben ist eine Sperrdiode
    Darunter ist ein Kondensator!

    Wenn ich jetzt das VB6 Projekt öffne kann ich hier irgendein Widerstand messen zwischen 2 und 30 wird er mir angezeigt, je nach Beleuchtung!

    Der Code sieht so aus: (grob)
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Timer_Tick()
    2. DTR 1
    3. TIMEINIT
    4. While (DSR() = 0) and TIMEREAD() < 951)
    5. DoEvents
    6. Wend
    7. R = TIMEREAD()
    8. if n = 2 then y1 = R
    9. y2 = R
    10. textbox.text = R
    11. DTR 0
    12. x1 = n
    13. n = n + 1
    14. x2 = n
    15. Picture.Draw(blabla)
    16. y1 = y2
    17. End Sub



    Leider werde ich aus den Code nicht wirklich schlau!
    Ich weiß nur das er vom DSR Pin Abfrägt oder irre ich mich da?!
    DTR 1 setzt das Statusbit auf 1
    danach wird eine knappe Sekunde gewartet, bis das Bit auf 1 gesetzt ist (Hardware-Reaktionszeit)
    dann wird ein Zähler hochgezählt und die Zeit(dauer) ausgegeben.
    Was er mit den Zähler-Variablen macht, ist hier nicht ersichtlich, da fehlt der anderere Code.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ja es wird auch ein "Widerstand" auf ein Diagramm dargestellt von ca 20 Minuten!
    Das ist aber eher unwichtig :)

    Dann muss es die Funktion TIMEREAD() sein die irgendwas ausließt!
    Hab auch im Buch dazu was gefunden:

    Quellcode

    1. procedur TIMEINIT()
    2. var f: int64;
    3. begin
    4. QueryPerfomanceFrequency(f);
    5. TimeUnit := 1000 / f;
    6. QueryPerformanceCounter(StartTime)
    7. end;
    8. function TIMEREAD(); Real;
    9. var t: int64;
    10. begin
    11. QueryPerformanceCounter(t);
    12. TIMEREAD := TimeUnit + (t - StartTime);
    13. end;
    14. procedure DELAY(DelayTime: Real);
    15. var TimeStart : real;
    16. begin
    17. TimeStart := TIMEREAD;
    18. while TIMEREAD < (TimeStart + DelayTime) do;
    19. end;


    So das ist alles was mit der Zeit zu tun hat!
    Wie ich aber sehe, macht er da auch nichts mit Auslesen irgendeines Wertes des Pins...
    Oder basiert das alles auf Zeiten usw?! Was ich mir aber nicht vorstellen kann...

    Danke erstmal

    n1nja schrieb:

    TIMEREAD()
    liest lediglich den (hoch genauen) Multimedia-Timer aus.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die wird dort ausgelesen, das ist ein Int64.
    In 32-Bit-Systemen wird aus zwei 32-Bit-Werten ein 64-Bit-Wert zusammengesetzt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ok also muss ich die ganze Zeit Geschichte erstmal übersetzen?!

    Habe im Netz auch gelesen, das man erstma was an den Sensor schicken muss damit er was ausgibt?
    Ist das richtig wenn ja, woher weiß ich was der Sensor versteht?!

    n1nja schrieb:

    woher weiß ich was der Sensor versteht?
    Der Sensor versteht gar nix. Die Elektronik um den Sensor herum verleiht ihm etwas Intelligenz.
    Tja, da musste Dich mal auf die Suche nach einem lesbaren Beispielprogramm machen oder Du organisierst Dir vom Hersteller eine autorisierte Beschreibung.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Es muss doch irgendwie möglich sein das man irgendwas anzeigen lassen kann oder nicht?!

    Mit SerialPort kann man doch was auslesen!

    Man muss ja nicht bedingt auf diese Funktionen zugreifen!
    Gibt doch bestimmt auch Möglichkeiten die das Framework bietet!

    Doch sobald ich irgendwas auslesen möchte, egal wie... dann hängt sich das Prgramm auf!
    Ja es ist auch in nen extra Thread, ist aber das gleiche Problem...
    Klar kannst Du über SerialPort was senden, doch wenn Deine Hardware das nicht versteht, passiert nix.
    Wenn Dein Telefon klingelt und jemand meldet sich auf chinesisch, kannst Du nicht reagiweren, weil Du ihn nicht verstehst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ok dann werd ich als erstes rausfinden um welches Bauteil es sich genau handelt und dann sehen welche "Sprache" es spricht:)

    Danach kann mit den Teil kommunizieren und erst dann sollte es möglich sein Werte auszulesen!?

    Soweit alles richtig??

    n1nja schrieb:

    erst dann sollte es möglich sein Werte auszulesen!?
    So isses. Stell ihm eine konkrete Frage und es wird, so es korerekt funktioniert, präzise antworten.
    Über die Sprache wirst Du Dich dann wohl etwas wundern. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!