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

Beitrag von Bura.Tino »

Wenn ich das so mache, zeigt er mir einen Syntaxerror an. :o
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

ach, du hast PB version < 4 ?
da gibt's keinen typ .c beziehungsweise keinen 1 byte unsigned.
weiß nich wie man das dann macht, ob es wichtig ist das der typ 1 byte ist oder ob es wichtiger ist dass der werte bereich zumindest in 0-255 liegt (was auch mit 2 byte word, der fall wäre).
sorry
,es müßte doch hier aber leute geben, die sich mit sprachen-crossover auskennen, ..naja.
my pb stuff..
Bild..jedenfalls war das mal so.
Bura.Tino
Beiträge: 38
Registriert: 08.12.2005 05:52

Beitrag von Bura.Tino »

Eigentlich müsste es das. Ist schon komisch daß das nicht geht. Irgendwas mach ich falsch. Wenn ich nur wüsste was das ist... :(
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 »

Aber mit Bytes müsste es unter PB 3.9x auch gehen

Code: Alles auswählen

i=0
Dim ucMsg.b(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)
For i= 0 To 4
Debug ucMsG(i)
Next i
Kommt jedenfalls das gleiche heraus wie mit Char
Bild
Win11 Pro 64-Bit, PB_6.11b1
Bura.Tino
Beiträge: 38
Registriert: 08.12.2005 05:52

Beitrag von Bura.Tino »

Geht leider auch nicht. :(
Kann es vielleicht sein das es an der MVCOM liegt ?
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 »

Die MVCOM braucht eine Adresse auf einen String.

Versuch mal dieses. Testen kann ich das nicht, da ich diese
Hardware dazu nicht habe.
Es könnte auch noch sein, das an der Stcructure noch etwas angepasst
werden müsste. Also bitte nicht gleich schimpfen :lol:

[Edit] Ich hoffe du nutzt jetzt nicht die PB-Demo-Version

Code: Alles auswählen

i=0

dcb.DCB

hCom=CreateFile_("COM1",#GENERIC_WRITE | #GENERIC_READ, 0, #Null, #OPEN_EXISTING, 0, #Null);
dcb\DCBlength=SizeOf(DCB)
GetCommState_(hCom,@dcb)
dcb\BaudRate = 2400
dcb\ByteSize = 8
dcb\Parity = #NOPARITY
dcb\StopBits = #ONESTOPBIT 
SetCommState_(hCom,@dcb)      
iBytesWritten.l

Dim ucMsg.b(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)

WriteFile_(hCom, ucMsg(), 5, @iBytesWritten, #Null);
CloseHandle_(hCom)

Debug iBytesWritten
Bild
Win11 Pro 64-Bit, PB_6.11b1
Bura.Tino
Beiträge: 38
Registriert: 08.12.2005 05:52

Beitrag von Bura.Tino »

Ich werd bekloppt ! Es funktioniert !!! *freu*
Danke Falko !!!!!

Jetzt muss ich nur noch verstehen warum es funktioniert und was der Unterschied zwischen dem anderen ist !?
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 »

Das kann man eigentlich schnell miteinander vergleichen:
Vermutlich liegt es am Checksum. Bei mir kommt da ein "n" raus
und bei dir ist da eine"}" zu sehen


Hier mal beides mittels Debug ausgegeben:

Code: Alles auswählen

Dim ucMsg.b(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)

Debug ucMsg()
Debug PeekS(ucMsg())


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) 
Debug @MyBuffer1
Debug MyBuffer1

Mit der MVCom müsste es auch gehen. Ich kann es wie gesagt nicht
testen:

Code: Alles auswählen

...
ComWrite(Hcom,ucMsg(),5)
Hauptsache es läuft schon mal :allright:

Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Bura.Tino
Beiträge: 38
Registriert: 08.12.2005 05:52

Beitrag von Bura.Tino »

Jup. :)
Ich teste noch ein bisschen ob alles geht.
msh
Beiträge: 8
Registriert: 28.06.2005 10:17

Beitrag von msh »

@Falko

Die Prüfsumme muß ja auch eine andere sein :mrgreen:

;----------------------------------------------------------------------------------
Dim ucMsg.b(4)
ucMsg(0) = 13
ucMsg(1) = 1
ucMsg(2) = Asc("S") ;(ist auch kein "C")
ucMsg(3) = 49 + i ;(entpsricht einer 1 - wenn i=0, hier hätte für mein Bsp. der Prüfsummenberechnung i=1 gesetzt werden müssen)
ucMsg(4) = ucMsg(0) ! ucMsg(1) ! ucMsg(2) ! ucMsg(3)
Debug ucMsg()
Debug PeekS(ucMsg())

msg1.s=Chr(13)
address=1
msg3.s="S"
msg4.s=Chr(49)
checksum = 255 - (13 + address + Asc(msg3) + Asc(msg4)) % 256 + 1 ;(ist jetzt angepasst, um die richtige Prüfsumme zu berechnen)
MyBuffer1.s=msg1+Chr(address)+msg3+msg4+Chr(checksum)
Debug @MyBuffer1
Debug MyBuffer1
;----------------------------------------------------------------------------------

@Bura.Tino

[Edit]
Habe gerade gesehen, daß Du mein Bsp 1:1 in Deinen Code eingebaut hast, dann aber doch andere Daten davor verwendest. Den Fehler habe ich leider übersehen - ich war aber wenigsten nicht der Einzigste :D .
[/Edit]

Sorry - das es so lange gedauert hat, bin leider nicht eher dazu gekommen.
Ich habe vorhin gerade mein altes Notebook angeworfen um es mal mit Hyperterm auf der anderen Seite zu testen. Habe aber gerade gesehen, daß da schon jemand schneller war.

MfG Mike
Antworten