- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte
Ergebnis 31 bis 40 von 50

Thema: VB Problem

  1. #31
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Anzeige

    Powerstation Test
    Beim Starten deiner .exe-Datei gibts nen Fehler: Invalid Portnumber. Mein COM-Port ist COM1.

  2. #32
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Beim Starten deiner .exe-Datei gibts nen Fehler: Invalid Portnumber. Mein COM-Port ist COM1.
    bekommst du nur eine Fehlermeldung, oder kannst du das Programm gar nicht starten? Eigentlich gibts in dem Programm extra einen Button mit dem du auf Com1 umstellen kannst, aber falls das Programm gar nicht startet, weil du keinen Com2 hast nutzt der Button wohl nix

    Ich mach mal eine neue Version mit Com1.

  3. #33
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    @jagdfalke
    HIER ist die .exe mit Com1 als Port.

  4. #34
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Also: Deine .exe-Datei funktioniert. Liegt aber nicht daran, dass du irgendwas anders gemacht hast: Wenn ich alles in eine Memo-Box schreiben lasse:
    memo1.text := memo1.text + Str;
    dann funktionierts genauso wie mit deinem Program. Wenn ich aber
    memo1.text := Str;
    schreibe bekomme ich immer das, was er abschneidet.

    Also nochmal verständlich:

    Bascom-Code:
    Code:
    $crystal = 8000000                                          'Quarzfrequenz
    $baud = 19200
    
    Mainloop:
    Print "hallohallo";
    Wait 1
    Goto Mainloop
    
    end
    Ausgabe, die immer in der Listbox kommt:
    halloha
    lo
    halloha
    lo
    usw.
    Ausgabe in Memo bei "memo1.text := memo1.text + Str;" :
    hallohallohallohallohallohallohallohallo usw.
    Ausgabe in Memo bei "memo1.text := Str;":
    lo
    Es kommt wirklich nur "lo" raus. Das heißt für mich, dass der String "hallohallo" wirklich in 2 Schritten übertragen wird: erst "halloha", dann "lo".

    @recycle:
    Schick mir doch mal dasselbe Program mit eine Listbox, also:
    listbox1.additem Str
    Mal schaun ob dann dasseble rauskommt wie bei mir

    mfg jagdfalke

    PS: Schaut doch mal in meine Galerie. Ich hab schonmal was gebaut. Ich finde es ist mir sehr gut gelungen.

  5. #35
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    @jagdfalke
    Schick mir doch mal dasselbe Program mit eine Listbox, also:
    listbox1.additem Str
    Mal schaun ob dann dasseble rauskommt wie bei mir
    Ich habs mal mit der Listbox ausprobiert. Du hast Recht, die Daten kommen bei mir auch in Blöcken zu 8 Zeichen an.

    Da die Daten in einem normalen Terminal-Programm unzerstückelt ankommen, ist das entweder normal für eine serielle Übertragung, oder es liegt am mscomm Objekt.

    Wenn du die Daten unbedingt in einer Listbox ausgeben willst, kannst du sie ja erst solange bis ein Zeilenumbruch kommt in einem String cachen und den dann in die Listboc einfügen.

  6. #36
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2005
    Beiträge
    102
    merkwürdig, warum schaust du dir den output nicht einach an, die darstellung in den boxen ist nicht ascii. du kannst daran auch nichts machen, ausser den output selber zu formatieren. einen zeilenumbruch brauchst du dann aber immernoch.

  7. #37
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Ok, das ist natürlich auch ne Möglichkeit. Am MSComm liegts nicht, da die COM-Port Komponente für Delphi genau gleich reagiert. Na wenigstens haben wir das jetzt geklärt. Kannst du dir mal das Input-Problem anschaun. Wieder gilt hier, dass VB und Delphi die gleichen Reaktionen hervorrufen. Es scheint sich aber eher um ein Bascom-Problem zu handeln, da es ja um den INPUT-Befehl geht.

    mfg
    jagdfalke

  8. #38
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Am MSComm liegts nicht, da die COM-Port Komponente für Delphi genau gleich reagiert. Na wenigstens haben wir das jetzt geklärt.
    OK, dann ist es vermutlich ganz normal, denn in einem Terminal-Programm kommen die Strings ja unzerstückelt an.

    Kannst du dir mal das Input-Problem anschaun. Wieder gilt hier, dass VB und Delphi die gleichen Reaktionen hervorrufen. Es scheint sich aber eher um ein Bascom-Problem zu handeln, da es ja um den INPUT-Befehl geht.
    In deinem Beispiel liest du den String mit Input ein und gibst ihn sofort mit Print wieder aus. Wie unterscheidest du denn da, ob der String schon beim Einlesen in Bascom oder erst nach dem Print beim Einlesen durch das mscomm-Objekt zerstückelt wird?


    Ausserdem hast du Serial_in als Word definiert und der Datentyp Word ist eine Zahl zwischen 0 und 65535.

  9. #39
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Ich hab geschrieben, dass es sich hier um ein anderes Problem handelt. Das zuerstückeln ist also völlig wurscht. Das Problem liegt darin, dass der Controller nach 3 empfangenen Strings keine weiteren mehr annimmt. Es sieht so aus, als ob er sich aufgehängt hat. Kannst ja bei dir mal ausprobieren. Das passiert aber wieder nur dann, wenn der String über VB bzw. Delphi geschickt wurde. Im Terminal kann ich so oft Zeichenketten schicken wie ich will und sie kommen immer wieder zurück. Ohne Probleme.

    mfg
    jagdfalke

  10. #40
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Das Problem liegt darin, dass der Controller nach 3 empfangenen Strings keine weiteren mehr annimmt. Es sieht so aus, als ob er sich aufgehängt hat. Kannst ja bei dir mal ausprobieren. Das passiert aber wieder nur dann, wenn der String über VB bzw. Delphi geschickt wurde.
    Ist bei mir ähnlich.
    Ich habe Serial_in als String deklariert und dabei muss man in Bascom angeben, wieviel Zeichen der String hat.

    Ich kann dann genau soviele Zeichen senden wie der String aufnehmen kann.
    Ob ich diese Anzahl auf einmal sende oder auf X Sendungen aufteile ist aber egal. Wenn ich den String 200 Zeichen gross mache kann ich auch 20 mal 10 Zeichen senden.

    Sieht mir danach aus, als würde der Input-Befehl alle neuen Zeichen hinten an den String anhängen, anstatt den alten Inhalt zu überschreiben.

    Da es mit einem nomalen Terminal-Programm funktioniert, liegt das aber vermutlich auch nicht an Controller und Bascom Programm.


    Vielleicht muss man bei dem mscomm Objekt noch manuell irgendein Zeichen mitsenden, dass der Gegenseite sagt, wo eine einzelne Sendung zu ende ist.

Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests