Steuerung einer K8056 Relaiskarte ?

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
Bura.Tino
Beiträge: 38
Registriert: 08.12.2005 05:52

Steuerung einer K8056 Relaiskarte ?

Beitrag von Bura.Tino »

Servus.

Ich habe mir einen Bausatz einer K8056-Relaiskarte von Velleman zugelegt und mit dem Testprogramm vom Hersteller auch ausprobiert. Funktioniert wunderbar.
Nun wollte ich mir ein Programm schreiben mit dem ich die Relais steuern kann. Aber leider funktioniert es nicht, weil ich nicht weiß was ich an die Karte senden muss. :(
In der dazugehörigen Bedienungsanleitung (Seite 34 in der PDF) steht das man folgende Befehlsfolge senden muss:
1. Chr(13)
2. Kartenadresse
3. Befehl
4. Adresse oder Relaisnummer
5. Checksum Summe
Als Checksumerklärung steht noch folgendes da:
2-Komplement der Summe der 4 vorigen Bytes+1
Was meinen die damit ? :-O

An der Karte ist unter anderem auch eine LED, die anzeigt ob Daten empfangen werden (Sie leuchtet auf, wenn sie was empfängt).
Nur bei meinem Programm bleibt sie aus. Müsste sie nicht eigentlich schon angehen, wenn ich nur chr(13) sende ?
msh
Beiträge: 8
Registriert: 28.06.2005 10:17

Beitrag von msh »

@Bura.Tino

Zum Zweierkomplement -hier klicken. (Google hätte Dir da auch geholfen).

Bitte beim nächsten mal die Anleitung ein wenig genauer lesen, da gibt es einen Link zum Hersteller u. es ist irgendwo eine Bsp.-Anwendung erwähnt.
In dieser findest Du in fast jeder Sub die komplette Prüfsummenberechnung (zweite Hälfte / hinter dem Form-Teil).

Hier mal der Inhalt der k8056.frm: (sorry an alle, das wird etwas länger - dahinter gibt es keinen Text mehr :) )

Edit: beachte - checksum als Gleitkomma deklarieren, sonst funktioniert die im Code verwendete Formel nicht

o. einen Ausdruck in der Form

(VB)checksum = 255 - (13 + address + Asc("C") + Asc("2")) Mod 256 + 1
(PB)checksum = 255 - (13 + address + Asc("C") + Asc("2")) % 256 + 1

verwenden.

MfG Mike
  • VERSION 5.00
    Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
    Begin VB.Form form1
    BorderStyle = 1 'Fixed Single
    Caption = "8 Channel relay board"
    ClientHeight = 5025
    ClientLeft = 45
    ClientTop = 330
    ClientWidth = 6195
    Icon = "K8056.frx":0000
    LinkTopic = "Form1"
    MaxButton = 0 'False
    MinButton = 0 'False
    ScaleHeight = 5025
    ScaleWidth = 6195
    StartUpPosition = 3 'Windows Default
    Begin VB.Timer Timer2
    Enabled = 0 'False
    Interval = 80
    Left = 240
    Top = 720
    End
    Begin VB.CommandButton Command24
    Caption = "8"
    Height = 375
    Index = 7
    Left = 3840
    TabIndex = 53
    Top = 4200
    Width = 375
    End
    Begin VB.CommandButton Command24
    Caption = "7"
    Height = 375
    Index = 6
    Left = 3360
    TabIndex = 52
    Top = 4200
    Width = 375
    End
    Begin VB.CommandButton Command24
    Caption = "6"
    Height = 375
    Index = 5
    Left = 2880
    TabIndex = 51
    Top = 4200
    Width = 375
    End
    Begin VB.CommandButton Command24
    Caption = "5"
    Height = 375
    Index = 4
    Left = 2400
    TabIndex = 50
    Top = 4200
    Width = 375
    End
    Begin VB.CommandButton Command24
    Caption = "4"
    Height = 375
    Index = 3
    Left = 1920
    TabIndex = 49
    Top = 4200
    Width = 375
    End
    Begin VB.CommandButton Command24
    Caption = "3"
    Height = 375
    Index = 2
    Left = 1440
    TabIndex = 48
    Top = 4200
    Width = 375
    End
    Begin VB.CommandButton Command24
    Caption = "2"
    Height = 375
    Index = 1
    Left = 960
    TabIndex = 47
    Top = 4200
    Width = 375
    End
    Begin VB.CommandButton Command24
    Caption = "1"
    Height = 375
    Index = 0
    Left = 480
    TabIndex = 46
    Top = 4200
    Width = 375
    End
    Begin VB.CommandButton Command22
    Caption = "8"
    Height = 375
    Index = 7
    Left = 3840
    TabIndex = 44
    Top = 3360
    Width = 375
    End
    Begin VB.CommandButton Command22
    Caption = "7"
    Height = 375
    Index = 6
    Left = 3360
    TabIndex = 43
    Top = 3360
    Width = 375
    End
    Begin VB.CommandButton Command22
    Caption = "6"
    Height = 375
    Index = 5
    Left = 2880
    TabIndex = 42
    Top = 3360
    Width = 375
    End
    Begin VB.CommandButton Command22
    Caption = "5"
    Height = 375
    Index = 4
    Left = 2400
    TabIndex = 41
    Top = 3360
    Width = 375
    End
    Begin VB.CommandButton Command22
    Caption = "4"
    Height = 375
    Index = 3
    Left = 1920
    TabIndex = 40
    Top = 3360
    Width = 375
    End
    Begin VB.CommandButton Command22
    Caption = "3"
    Height = 375
    Index = 2
    Left = 1440
    TabIndex = 39
    Top = 3360
    Width = 375
    End
    Begin VB.CommandButton Command22
    Caption = "2"
    Height = 375
    Index = 1
    Left = 960
    TabIndex = 38
    Top = 3360
    Width = 375
    End
    Begin VB.CommandButton Command22
    Caption = "1"
    Height = 375
    Index = 0
    Left = 480
    TabIndex = 37
    Top = 3360
    Width = 375
    End
    Begin VB.ComboBox Combo3
    Height = 315
    Left = 4680
    TabIndex = 35
    Text = "49"
    Top = 360
    Width = 1095
    End
    Begin VB.ComboBox Combo2
    Height = 315
    Left = 3360
    TabIndex = 34
    Text = "49"
    Top = 360
    Width = 1095
    End
    Begin VB.CommandButton Command21
    Caption = "O"
    Height = 375
    Left = 3840
    TabIndex = 33
    Top = 2160
    Width = 375
    End
    Begin VB.CommandButton Command20
    Caption = "1"
    Height = 375
    Left = 3840
    TabIndex = 32
    Top = 1800
    Width = 375
    End
    Begin VB.CommandButton Command19
    Caption = "O"
    Height = 375
    Left = 3360
    TabIndex = 31
    Top = 2160
    Width = 375
    End
    Begin VB.CommandButton Command18
    Caption = "1"
    Height = 375
    Left = 3360
    TabIndex = 30
    Top = 1800
    Width = 375
    End
    Begin VB.CommandButton Command17
    Caption = "O"
    Height = 375
    Left = 2880
    TabIndex = 29
    Top = 2160
    Width = 375
    End
    Begin VB.CommandButton Command16
    Caption = "1"
    Height = 375
    Left = 2880
    TabIndex = 28
    Top = 1800
    Width = 375
    End
    Begin VB.CommandButton Command15
    Caption = "O"
    Height = 375
    Left = 2400
    TabIndex = 27
    Top = 2160
    Width = 375
    End
    Begin VB.CommandButton Command14
    Caption = "1"
    Height = 375
    Left = 2400
    TabIndex = 26
    Top = 1800
    Width = 375
    End
    Begin VB.CommandButton Command13
    Caption = "O"
    Height = 375
    Left = 1920
    TabIndex = 25
    Top = 2160
    Width = 375
    End
    Begin VB.CommandButton Command12
    Caption = "1"
    Height = 375
    Left = 1920
    TabIndex = 24
    Top = 1800
    Width = 375
    End
    Begin VB.CommandButton Command11
    Caption = "O"
    Height = 375
    Left = 1440
    TabIndex = 23
    Top = 2160
    Width = 375
    End
    Begin VB.CommandButton Command10
    Caption = "1"
    Height = 375
    Left = 1440
    TabIndex = 22
    Top = 1800
    Width = 375
    End
    Begin VB.CommandButton Command9
    Caption = "O"
    Height = 375
    Left = 960
    TabIndex = 21
    Top = 2160
    Width = 375
    End
    Begin VB.CommandButton Command8
    Caption = "1"
    Height = 375
    Left = 960
    TabIndex = 20
    Top = 1800
    Width = 375
    End
    Begin VB.CommandButton Command2
    Caption = "O"
    Height = 375
    Left = 480
    TabIndex = 19
    Top = 2160
    Width = 375
    End
    Begin VB.CommandButton Command1
    Caption = "1"
    Height = 375
    Left = 480
    TabIndex = 18
    Top = 1800
    Width = 375
    End
    Begin VB.CommandButton Command7
    Caption = "change addr."
    Height = 375
    Left = 4680
    TabIndex = 6
    Top = 720
    Width = 1095
    End
    Begin VB.CommandButton Command6
    Caption = "show addr."
    Height = 375
    Left = 3360
    TabIndex = 5
    Top = 720
    Width = 1095
    End
    Begin VB.CommandButton Command5
    Caption = "Emergency S T O P"
    Height = 1935
    Left = 4800
    TabIndex = 4
    Top = 2760
    Width = 975
    End
    Begin VB.CommandButton Command4
    Caption = "CLEAR ALL"
    Height = 375
    Left = 4680
    TabIndex = 3
    Top = 2160
    Width = 1095
    End
    Begin VB.CommandButton Command3
    Caption = "SET ALL"
    Height = 375
    Left = 4680
    TabIndex = 2
    Top = 1800
    Width = 1095
    End
    Begin VB.ComboBox Combo1
    Height = 315
    Left = 1800
    TabIndex = 0
    ToolTipText = "Select the serial port"
    Top = 240
    Width = 615
    End
    Begin VB.Timer Timer1
    Enabled = 0 'False
    Interval = 20
    Left = 0
    Top = 2880
    End
    Begin MSCommLib.MSComm comm
    Left = -120
    Top = 2280
    _ExtentX = 1005
    _ExtentY = 1005
    _Version = 393216
    CommPort = 2
    DTREnable = -1 'True
    RTSEnable = -1 'True
    BaudRate = 2400
    End
    Begin VB.Frame Frame1
    Caption = "Address"
    Height = 1215
    Left = 3120
    TabIndex = 36
    Top = 120
    Width = 2775
    End
    Begin VB.Frame Frame2
    Caption = "Toggle buttons"
    Height = 735
    Left = 360
    TabIndex = 45
    Top = 3120
    Width = 4095
    End
    Begin VB.Frame Frame3
    Caption = "Momentary buttons"
    Height = 735
    Left = 360
    TabIndex = 54
    Top = 3960
    Width = 4095
    End
    Begin VB.Frame Frame4
    Caption = "ON/OFF"
    Height = 1095
    Left = 360
    TabIndex = 55
    Top = 1560
    Width = 5535
    End
    Begin VB.Label Label9
    Caption = "8"
    Height = 255
    Left = 3960
    TabIndex = 17
    Top = 2760
    Width = 135
    End
    Begin VB.Label Label8
    Caption = "7"
    Height = 255
    Left = 3480
    TabIndex = 16
    Top = 2760
    Width = 135
    End
    Begin VB.Label Label7
    Caption = "6"
    Height = 255
    Left = 3000
    TabIndex = 15
    Top = 2760
    Width = 255
    End
    Begin VB.Label Label6
    Caption = "5"
    Height = 255
    Left = 2520
    TabIndex = 14
    Top = 2760
    Width = 255
    End
    Begin VB.Label Label5
    Caption = "4"
    Height = 255
    Left = 2040
    TabIndex = 13
    Top = 2760
    Width = 255
    End
    Begin VB.Label Label4
    Caption = "3"
    Height = 255
    Left = 1560
    TabIndex = 12
    Top = 2760
    Width = 255
    End
    Begin VB.Label Label3
    Caption = "Label3"
    Height = 15
    Index = 3
    Left = 0
    TabIndex = 11
    Top = 0
    Width = 135
    End
    Begin VB.Label Label3
    Caption = "2"
    Height = 255
    Index = 2
    Left = 1080
    TabIndex = 10
    Top = 2760
    Width = 135
    End
    Begin VB.Label Label3
    Caption = "Label3"
    Height = 15
    Index = 1
    Left = 0
    TabIndex = 9
    Top = 0
    Width = 135
    End
    Begin VB.Label Label3
    Caption = "Label3"
    Height = 15
    Index = 0
    Left = 360
    TabIndex = 8
    Top = 1680
    Width = 135
    End
    Begin VB.Label Label2
    Caption = "1"
    Height = 255
    Left = 600
    TabIndex = 7
    Top = 2760
    Width = 255
    End
    Begin VB.Label Label1
    Caption = "Choose serial port"
    Height = 255
    Left = 360
    TabIndex = 1
    Top = 240
    Width = 1335
    End
    End
    Attribute VB_Name = "form1"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = False
    Attribute VB_PredeclaredId = True
    Attribute VB_Exposed = False
    Dim messagestring As String 'will contain all messages to transmit
    Dim charcounter As Integer 'will keep track of the position in messagestring
    Dim address As Integer
    Dim factor As Integer

    Dim port As String 'keeps serial port #


    Private Sub Combo1_Change()
    If comm.PortOpen = True Then comm.PortOpen = False

    port = Combo1.Text

    comm.CommPort = Val(Combo1)
    comm.Handshaking = None
    comm.Settings = "2400,N,8,1"
    comm.OutBufferSize = 4096
    comm.InputLen = 0
    comm.RThreshold = 1
    comm.SThreshold = 1
    comm.DTREnable = True

    comm.PortOpen = True
    End Sub

    Private Sub Combo1_Click()
    If comm.PortOpen = True Then comm.PortOpen = False

    port = Combo1.Text

    comm.CommPort = Val(Combo1)
    comm.Handshaking = None
    comm.Settings = "2400,N,8,1"
    comm.OutBufferSize = 4096
    comm.InputLen = 0
    comm.RThreshold = 1
    comm.SThreshold = 1
    comm.DTREnable = True

    comm.PortOpen = True
    End Sub













    Private Sub Combo2_Change()
    address = Val(Combo2.Text)

    End Sub

    Private Sub Combo2_Click()
    address = Val(Combo2.Text)
    End Sub



    Private Sub Command1_Click()
    checksum = (255 - ((((13 + address + Asc("S") + Asc("1")) / 256) - Int((13 + address + Asc("S") + Asc("1")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "S1" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command10_Click()
    checksum = (255 - ((((13 + address + Asc("S") + Asc("3")) / 256) - Int((13 + address + Asc("S") + Asc("3")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "S3" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command11_Click()
    checksum = (255 - ((((13 + address + Asc("C") + Asc("3")) / 256) - Int((13 + address + Asc("C") + Asc("3")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "C3" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub





    Private Sub Command12_Click()
    checksum = (255 - ((((13 + address + Asc("S") + Asc("4")) / 256) - Int((13 + address + Asc("S") + Asc("4")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "S4" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command13_Click()
    checksum = (255 - ((((13 + address + Asc("C") + Asc("4")) / 256) - Int((13 + address + Asc("C") + Asc("4")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "C4" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command14_Click()
    checksum = (255 - ((((13 + address + Asc("S") + Asc("5")) / 256) - Int((13 + address + Asc("S") + Asc("5")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "S5" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command15_Click()
    checksum = (255 - ((((13 + address + Asc("C") + Asc("5")) / 256) - Int((13 + address + Asc("C") + Asc("5")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "C5" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command16_Click()
    checksum = (255 - ((((13 + address + Asc("S") + Asc("6")) / 256) - Int((13 + address + Asc("S") + Asc("6")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "S6" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command17_Click()
    checksum = (255 - ((((13 + address + Asc("C") + Asc("6")) / 256) - Int((13 + address + Asc("C") + Asc("6")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "C6" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command18_Click()
    checksum = (255 - ((((13 + address + Asc("S") + Asc("7")) / 256) - Int((13 + address + Asc("S") + Asc("7")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "S7" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command19_Click()
    checksum = (255 - ((((13 + address + Asc("C") + Asc("7")) / 256) - Int((13 + address + Asc("C") + Asc("7")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "C7" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command2_Click()
    checksum = (255 - ((((13 + address + Asc("C") + Asc("1")) / 256) - Int((13 + address + Asc("C") + Asc("1")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "C1" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command20_Click()
    checksum = (255 - ((((13 + address + Asc("S") + Asc("8")) / 256) - Int((13 + address + Asc("S") + Asc("8")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "S8" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command21_Click()
    checksum = (255 - ((((13 + address + Asc("C") + Asc("8")) / 256) - Int((13 + address + Asc("C") + Asc("8")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "C8" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub




    Private Sub Command22_Click(Index As Integer)

    factor = Str$(Command22(Index).Index + 1)

    checksum = (255 - ((((13 + address + Asc("T") + Asc(factor)) / 256) - Int((13 + address + Asc("T") + Asc(factor)) / 256)) * 256)) + 1
    messagestring = Chr$(13) & Chr$(address) & "T" & factor & Chr$(checksum)

    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub







    Private Sub Command24_Click(Index As Integer)
    Command5.SetFocus
    Timer2.Enabled = False

    End Sub

    Private Sub Command24_GotFocus(Index As Integer)

    factor = Str$(Command22(Index).Index + 1)

    checksum = (255 - ((((13 + address + Asc("P") + Asc(factor)) / 256) - Int((13 + address + Asc("P") + Asc(factor)) / 256)) * 256)) + 1
    messagestring = Chr$(13) & Chr$(address) & "P" & factor & Chr$(checksum)

    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    Timer2.Enabled = True


    End Sub

    Private Sub Command3_Click()
    checksum = (255 - ((((13 + address + Asc("S") + Asc("9")) / 256) - Int((13 + address + Asc("S") + Asc("9")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "S9" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command4_Click()
    checksum = (255 - ((((13 + address + Asc("C") + Asc("9")) / 256) - Int((13 + address + Asc("C") + Asc("9")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "C9" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command5_Click()
    checksum = (255 - ((((13 + address + Asc("E") + Asc("1")) / 256) - Int((13 + address + Asc("E") + Asc("1")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "E1" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command6_Click()
    checksum = (255 - ((((13 + address + Asc("D") + Asc("1")) / 256) - Int((13 + address + Asc("D") + Asc("1")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "D1" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command7_Click()

    checksum = (255 - ((((13 + address + Asc("A") + Val(Combo3.Text)) / 256) - Int((13 + address + Asc("A") + Val(Combo3.Text)) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "A" & Chr$(Val(Combo3.Text)) & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    Combo2.Text = Combo3.Text

    End Sub

    Private Sub Command8_Click()
    checksum = (255 - ((((13 + address + Asc("S") + Asc("2")) / 256) - Int((13 + address + Asc("S") + Asc("2")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "S2" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Command9_Click()
    checksum = (255 - ((((13 + address + Asc("C") + Asc("2")) / 256) - Int((13 + address + Asc("C") + Asc("2")) / 256)) * 256)) + 1

    messagestring = Chr$(13) & Chr$(address) & "C2" & Chr$(checksum)
    messagestring = messagestring & messagestring
    messagestring = messagestring & messagestring
    comm.Output = messagestring
    End Sub

    Private Sub Form_Load()

    address = 1

    For t = 1 To 255

    Combo2.AddItem (Str$(t))
    Combo3.AddItem (Str$(t))
    Next t
    Combo2.Text = "1"



    Timer1.Enabled = False
    On Error GoTo no_port


    flag = True
    comm.CommPort = "1"
    comm.PortOpen = True
    Combo1.AddItem ("1")
    comm.PortOpen = False

    retry_port:
    flag = False

    comm.CommPort = "2"
    comm.PortOpen = True
    Combo1.AddItem ("2")
    comm.PortOpen = False

    Combo1.Text = Combo1.List(0)
    Exit Sub

    no_port:
    If flag = True Then GoTo retry_port
    Combo1.Text = Combo1.List(0)



    End Sub

    Private Sub Form_Terminate()
    comm.DTREnable = False

    If comm.PortOpen = True Then comm.PortOpen = False
    End Sub





    Private Sub Timer1_Timer()

    tekst = Mid$(messagestring, charcounter, 1)
    If tekst = "$" Then tekst = Chr$(11)
    comm.Output = tekst

    charcounter = charcounter + 1
    If charcounter = Len(messagestring) + 1 Then Timer1.Enabled = False



    End Sub

    Private Sub Timer2_Timer()

    comm.Output = messagestring
    End Sub
Bura.Tino
Beiträge: 38
Registriert: 08.12.2005 05:52

Beitrag von Bura.Tino »

Ja den Quelltext hab ich auch, aber das ist VB. Und das kann ich nicht.
Ich hab schon viel ausprobiert, aber es funktioniert einfach nicht. :(

Nach Deiner Schreibweise der Checksum sieht das bei mir so aus:
msg1.s=Chr(13)
address=1
msg2.s="S"
msg3.s=Chr(49)
checksum = 255 - (13 + address + Asc("C") + Asc("2")) % 256 + 1

Message.s=msg1+Chr(address)+msg3+msg4+Chr(checksum)
Um nochmal auf meine Frage zurückzukommen: Müsste die LED nicht auch aufleuchten, wenn ich nur Chr(13) sende ?
msh
Beiträge: 8
Registriert: 28.06.2005 10:17

Beitrag von msh »

@Bura.Tino
Um nochmal auf meine Frage zurückzukommen: Müsste die LED nicht auch aufleuchten, wenn ich nur Chr(13) sende ?
Nicht zwangsweise. Es währe durchaus denkbar, das die LED als eine Art opt. Empfangskontrolle fungiert und erst auf einen vollständig empfangenen Datensatz reagiert.

Der String selbst sollte erst mal i.O. sein, aber vergiss nicht diesen Teil aus dem Quellcode

Code: Alles auswählen

messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
Der String wird vervierfacht (irgendwo in der Anleitung stand etwas - wenn ich mich richtig erinnere - , das er mindestens zwei mal im Stück gesendet werden soll und anschließend eine min. Pause von x ms eingehalten werden soll.

Weiterhin ist es wichtig, das Du die COM-Schnittstelle richtig einstellst/ansprichst. Geb doch einfach mal ein wenig mehr Deines Progs raus, der String allein ist noch nicht mal die halbe Miete.

MfG Mike
Bura.Tino
Beiträge: 38
Registriert: 08.12.2005 05:52

Beitrag von Bura.Tino »

Ok. Hier das was ich bis jetzt geschrieben habe:

Code: Alles auswählen

OpenConsole()

MyCom.s = "Com1: baud=2400 parity=N data=8 stop=1"
Hcom.l
Hcom = ComOpen(MyCom,0,0,4096)

If Hcom=0
 PrintN("ComPort konnte nicht initialisiert werden.")
 Delay(2000)
 End
Else
 PrintN("ComPort wurde initialisiert.")
EndIf

msg1.s=Chr(13)
address=1
msg3.s="S"
msg4.s=Chr(49)
checksum = 255 - (13 + address + Asc("C") + Asc("2")) % 256 + 1

MyBuffer1.s=msg1+Chr(address)+msg3+msg4+Chr(checksum)

For i=1 To 10
 If ComWrite(Hcom,@MyBuffer1,Len(MyBuffer1))
  Delay(500)
 Else
  End
 EndIf
Next

ComClose(Hcom)
CloseConsole()
End
Wie Du siehst sende ich sogar 10x den Befehl und mache jeweils eine 500ms Pause. In der Anleitung steht das man mindestens 300ms machen soll.
Daher sollte es funktionieren. Das tut es aber eben nicht. :roll:
Bura.Tino
Beiträge: 38
Registriert: 08.12.2005 05:52

Beitrag von Bura.Tino »

Hat denn niemand mehr eine Idee ? :(
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Hier ist ein C-Source, das funktionieren soll. Leider weiss ich nicht, wie man folgendes in PB schreibt:
ucMsg[4] = ucMsg[0] ^ ucMsg[1] ^ ucMsg[2] ^ ucMsg[3];
Aber hierzu mal der complette Source auf dieser Seite unten:

http://www.tutorials.de/forum/c-c/19987 ... karte.html

Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

ucMsg(4) = ucMsg(0) ! ucMsg(1) ! ucMsg(2) ! ucMsg(3)
?
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Achso, dann müßte man es, damit es in PB auch funktioniert,
etwa so anstellen. Ich hoffe das entspricht dem C-Source:

Code: Alles auswählen

Dim ucMsg.s(4)
ucMsg(0) = Chr(13)
ucMsg(1) = Chr(1)
ucMsg(2) = "S"
ucMsg(3) = Chr(49 + i)
ucMsg(4) = Str(Asc(ucMsg(0)) ! Asc(ucMsg(1)) ! Asc(ucMsg(2)) ! Asc(ucMsg(3)))
Debug ucMsg(4); Ergebnis der Checksumme
Zuletzt geändert von Falko am 12.08.2006 21:18, insgesamt 1-mal geändert.
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

ein
array[5];
entspricht in PB eigentlich einem
Dim array(4)
..auch wenn es in dem beispiel keine rolle spielt (die c arrays werden wie die arrays in PB structures deklariert - besser gesagt andersherum)

und der c type
unsigned char
entspricht doch genau dem PB type
.c
(in ascii)

also..

Code: Alles auswählen

Dim ucMsg.c(4)
ucMsg(0) = 13
ucMsg(1) = 1
ucMsg(2) = asc("S")
ucMsg(3) = 49 + i
ucMsg(4) = ucMsg(0) ! ucMsg(1) ! ucMsg(2) ! ucMsg(3)
aber weder weiß ich worum es bei euch geht, noch versteh ich den rest des codes <) :|
my pb stuff..
Bild..jedenfalls war das mal so.
Antworten