- Labornetzteil AliExpress         
Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 50

Thema: VB Problem

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

    E-Bike
    Also die min und max Werte sind richtig (min = 0; max = 255).
    hier mal die kompletten Eigenschaften der Scroll-Bar:
    Code:
    Name = HScroll1
    CausesValidation = True
    DragIcon = none
    DragMode = 1
    Enable = True
    Height = 255
    HelpContextID = 0
    Index = [leer]
    LargeChange = 1
    Left = 120
    Max = 255
    Min = 0
    MouseIcon = none
    RightToLeft = False
    SmallChange = 1
    TabIndex = 5
    TabStop = True
    Tag = [leer]
    Top = 960
    Value = 0
    Visible = True
    WhatsThisHelpID = 0
    Width = 4575
    Wie stellst du dir das mit den Pausen vor? Das ganze FUnktioniert ja über das OnComm-Event, oder geht das auch anders? Naja lassen wird das, es gibt schon wieder neue Probleme:

    hier der kompette code:
    Code:
    Private Sub Form_Load()
        MSComm1.CommPort = 1
        MSComm1.RTSEnable = True
        MSComm1.Settings = "9600,N,8,1"
        MSComm1.PortOpen = True
        MSComm1.RThreshold = 1
        MSComm1.SThreshold = 1
        MSComm1.InputLen = 0
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
        MSComm1.PortOpen = False
    End Sub
    
    Private Sub MSComm1_OnComm()
             Dim InBuff As String
    
             Select Case MSComm1.CommEvent
             ' Errors
                Case comEventBreak   ' A Break was received.
                Case comEventCDTO    ' CD (RLSD) Timeout.
                Case comEventCTSTO   ' CTS Timeout.
                Case comEventDSRTO   ' DSR Timeout.
                Case comEventFrame   ' Framing Error.
                Case comEventOverrun ' Data Lost.
                Case comEventRxOver  ' Receive buffer overflow.
                Case comEventRxParity   ' Parity Error.
                Case comEventTxFull  ' Transmit buffer full.
                Case comEventDCB     ' Unexpected error retrieving DCB]
    
             ' Events
                Case comEvCD   ' Change in the CD line.
                Case comEvCTS  ' Change in the CTS line.
                Case comEvDSR  ' Change in the DSR line.
                Case comEvRing ' Change in the Ring Indicator.
                Case comEvReceive ' Received RThreshold # of chars.
                   InBuff = MSComm1.Input
                   Call HandleInput(InBuff)
                Case comEvSend ' There are SThreshold number of
                               ' characters in the transmit buffer.
                Case comEvEOF  ' An EOF character was found in the
                               ' input stream.
             End Select
    End Sub
    
    
    Sub HandleInput(InBuff As String)
        Dim Eingang_STR  As String
        Dim Pos_Doppelpunkt As Integer
        Dim Data_identification_str As String
        
        Eingang_STR = Trim(Replace(InBuff, vbCrLf, ""))
    
        Pos_Doppelpunkt = InStr(Eingang_STR, ":")
        Data_identification_str = Left(Eingang_STR, Pos_Doppelpunkt)
    
        List1.AddItem Eingang_STR
    End Sub
    Das Prozessor sendet sowas wie "Servo1:232". Die Funktion HandleInput soll unterscheiden zwischen Daten, die den Servo oder den Schrittmotor betreffen. Das Problem liegt aber mal wieder beim empfangen:
    Den interessiert es garnet, wann meine Daten (die gesendet werden) ankommen. Wenn ich im falschen Moment das Programm starte hab ich z.B. "vo1:232". Und dann hängt er ab und zu mal einfach was vom nächsten Paket dran: "vo1:232S". Es sind aber immer genau 8 Zeichen. Die hängt er einfach aneinander, auch wenn im richtigen Moment einschalte. Man des Zeug stresst mich.

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Also hier im Anhang nochmal ein Bild zur Verdeutlichung. Was auf dem Bild zu sehen ist, ist das, was ich empfange. Ich mache nichts weiter, als den String zu empfangen und so wie er ist in die Listbox zu schreiben.

    Bitte helft mir !!! Die seltsamen Zeichen hinten dran abzuschneiden ist ja nicht das Problem, aber warum werden die einzelnen Strings so zerrissen?
    mfg
    jagdfalke
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken pic1.jpg  

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Wenn dich die Zeilenumbrüche stören, könntest du sie einfach gar nicht erst versenden.

    Wenn du in Bascom Print "Hallo" schreibst, schickt Bascom einen Zeilenumbruch mit.
    Wenn du stattdessen Print "Hallo"; schreibst schickt Bascom das Hallo ohne Zeilenumbruch

  4. #14
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Cool, danke für den Tip!! Dennoch sieht die Ausgabe so aus, wie auf dem Bild im Anhang. Die Zeichen sind zwar weg, aber das was geprinted wird wird immer noch zerstückelt. Kann man nur 8 Zeichen senden?
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken pic.jpg  

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Bei mir gibt's bei folgendem Testcode keine Probleme mit mehr als 8 Zeichen:


    Code:
    '######### Bascom
    Do
       Ts = Getadc(0)
       Print "Der Porta.1 hat den Wert: " ; : Print Ts
       Waitms 10
    Loop
    
    
    
    '####### VB
    
    Private Sub Form_Load()
        With MSComm1
            .CommPort = 1
            .Settings = "19200,N,8,1"
            .PortOpen = True
            .RThreshold = 1
            .SThreshold = 1
            .InputLen = 0
        End With
    End Sub
    
    Private Sub Form_Terminate()
        End
    End Sub
    
    Private Sub MSComm1_OnComm()
        Select Case MSComm1.CommEvent
            Case comOverrun
            MsgBox "Datenverlust"
            Case comRxOver
            MsgBox "Datenverlust"
            Case comEvReceive
            data_in = MSComm1.Input
            Text1.Text = Text1.Text & data_in
        End Select
    End Sub
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken mscomm.jpg  

  6. #16
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    habs mittlerweise in delphi umgeschrieben. ich benutze die Com Komponente aus dem Download Bereich. In VB hatte ich genau das selbe Problem.

    Code:
    unit ComMainForm;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls, CPort, CPortCtl;
    
    type
      TForm1 = class(TForm)
        ComPort: TComPort;
        Button_Open: TButton;
        ListBox1: TListBox;
        procedure Button_OpenClick(Sender: TObject);
        procedure ComPortOpen(Sender: TObject);
        procedure ComPortClose(Sender: TObject);
        procedure ComPortRxChar(Sender: TObject; Count: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.DFM}
    
    procedure TForm1.Button_OpenClick(Sender: TObject);
    begin
      if ComPort.Connected then
        ComPort.Close
      else
        ComPort.Open;
    end;
    
    
    procedure TForm1.ComPortOpen(Sender: TObject);
    begin
      Button_Open.Caption := 'Close';
    end;
    
    procedure TForm1.ComPortClose(Sender: TObject);
    begin
      if Button_Open <> nil then
        Button_Open.Caption := 'Open';
    end;
    
    procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
    var
      Str: String;
    begin
      ComPort.ReadStr(Str, Count);
      listbox1.Items.Add(Str);
    end;
    
    
    end.
    Einstellungen von ComPort1:
    Baudrate = br960
    Buffer: InputSize = 1024 OutputSize = 1024
    Connceted = False
    DataBits = dbEight
    DiscardNull = True
    EventChar = #0
    Events = alle true
    ControlDTR = dtrEnable
    ControlRTS = rtsEnable
    DSRSensitivity = False
    FlowControl = fcNone
    OutCTSFlow = False
    OutDSRFlow = False
    TxContinueOnXoff = False
    XoffChar = #19
    XonChar = #17
    XonXoffln = False
    XonXoffOut = False
    Parity:
    Bits = prNone
    Check = false
    Replace = False
    ReplaceChar = #0
    Port = COM1
    StopBits = sbOneStopBit
    SyncMethod = smThreadSync
    Tag = 0
    Timeouts:
    ReadInterval = -1
    ReadTotalConstant = 0
    ReadTotalMultiplier = 0
    WriteTotalConstant = 1000
    WriteTotalMultiplier = 100




    Bascom Code:
    Code:
    Dim I As Byte
    
    $crystal = 8000000                                        
    $baud = 9600
    
    
    Weiter:
    
    I = 0
    Do
       Incr I
       Waitms 500
       Print "HalloHallo" ; I;
    Loop
    
    End
    Also für Baud = 19200 kommt bei mir nur Scheiß raus. Is glaub ich normal.

  7. #17
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Also für Baud = 19200 kommt bei mir nur Scheiß raus. Is glaub ich normal.
    Bei mir kommt bei Baud = 19200 aber doch genau das raus, was ich sende.
    Hast du einen Quarz an deinem µC oder betreibst du den mit dem internen Oscilator? Mit letzterm kriege ich bei Baud = 19200 auch nur Schrott übertragen.

  8. #18
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Ähm, naja, ich bin totaler Anfänger was das betrifft. Dh ich hab keine Ahnung.

  9. #19
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Ich hab das Fusebit A987 auf "1111:Ceramic resonator/Crystal, BOD enabled" eingestellt. Hat das was damit zu tun?


    BTW: Es scheint kein Visual Basic Problem zu sein, da ich mit Delphi ja genau die selben Ergebnisse bekomme.

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.05.2004
    Ort
    Detmold
    Alter
    37
    Beiträge
    557
    Öhm, hab' mir zwar nicht alles durchgelesen *schäm*, aber spontan würd mir einfallen, dass du bei deiner µC-Software - falls es Bascom ist - nach der Print-Anweisung noch ein Semikolon ";" dranhängst...

    Gruß, Trabukh
    "Der Mensch wächst am Widerstand" (Werner Kieser)

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

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

12V Akku bauen