Op school heb ik es een IO-box gemaakt. Een IO-box is een kastje met 3 printen.
print 1 bevat een atmel processor, AT90S8515.
print 2 is een kaart die tussen de processor zit en de relays / ingangen.
print 3 bevat 8 relays en 8 inleespoortjes.
schematisch gezien ziet het er zo uit :
pc - atmel - print2 (adres1) - print3
ook is de mogelijkheid om deze uit te breiden door nogmaals een print 2 + 3 te maken en print 2 op adres 2 te zetten. dit kan 255 keer zodat je 255 kaarten hebt met 8 relays / inleespoortjes.
momenteel heb ik het schema hier boven.. met 1 adres print dus 
het probleem waar ik op stuit met het programmere in VB is,
wanneer ik een relay wil aanzetten doe ikhet volgende :
mscomm1.output = chr(1) &chr(1) &chr(10) &chr(13)
zo wordt op print 1 relay 1 aangezet
wil ik relay 3 aanzette doe ik:
mscomm1.output = chr(1) &chr(4) &chr(10) &chr(13)
de eerst chr geeft aan welke print aangestuurd moet worden, dus als ik hem zou uitbreiden met meerdere kaarten kun je zo aangeven welke aangestuurd moet worden.
tot zo ver nog geen probleme 
een poortje van de 8 is actief wanneer er bijvoorbeeld 12 volt op staat, wanneer je dit uitleest zal bij port 1 een waarde van 1 komen, bij poort 7 een waarde van 64.
het uitlezen is echter een probleem
als eerste moet ik dus het adres aangeven dit doe ik doormiddel van :
mscomm1.output = chr(1)
daar na moet ik de input uitlezen door middelvan :
var = mscomm1.input
wanneer ik deze regels onder een knop zet, en 1x uitvoer werkt het. voer ik het een tweede keer uit wordt ineens relay1 aangeschakeld @#$@#$
na wat prutsen ben ik der achter gekomen dat wanneer ik inlees de mscomm1.output = chr(1) op 1 of andere manier blijft bestaan. dus wanneer ik een tweede keer uitlees, komt er nog een chr(1) bij dus wordt relay 1 aangezet 
hoe kan ik dit nou goed oplossen ?
ik moet dus op 1 of andere manier een adres mee geven
en zorgen dat het na het uitlezen weer wordt 'afgesloten'
groeten
nash
damn werkt niet 
mijn code s nu als volgt :
Private Sub Command1_Click()
'MSComm1.Break = True
'MSComm1.CDHolding = True
'Call flushtxbuf
MSComm1.Output = Chr(1) '& Chr(0) '& Chr(10) & Chr(13)
sdata = MSComm1.Input '& Chr(13) & Chr(10)
MSComm1.Output = Chr(1) & Chr(0)
MSComm1.Output = Chr(1) & Chr(0)
MSComm1.Output = Chr(1) & Chr(0)
Text3.Text = sdata
'MSComm1.Output = Chr(1) & Chr(0)
'MSComm1.CTSHolding = False
'MSComm1.DSRHolding = False
'MSComm1.Output = Chr$(cmdtnx) & Chr(10) & Chr(13)
End Sub
Private Sub flushtxbuf()
Do
DoEvents
Text2.Text = Text2.Text & MSComm1.InBufferCount
Loop Until (MSComm1.InBufferCount = 0)
End Sub
Public Sub inbufferclear(commcontrol)
Dim dummy
dummy = commcontrol.Input
commcontrol.Output = dummy
End Sub
Private Sub Command2_Click()
MSComm1.Output = Chr(1) '& Chr(0) & Chr(10) & Chr(13)
MSComm1.Output = Chr(0) & Chr(13) & Chr(10)
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 2
MSComm1.Settings = "9600,N,8,1"
'MSComm1.SThreshold = 1
MSComm1.PortOpen = True
MSComm1.RTSEnable = True
MSComm1.DTREnable = True
MSComm1.InputLen = 0
MSComm1.RThreshold = 1
' MSComm1.InputMode = comInputModeBinary
'MSComm1.Output = "1"
'MSComm1.Output = "5 & vbCrLf"
'Debug.Print buffer
'& Chr(13)
MSComm1.Output = Chr(1) '& Chr(0) & Chr(10) & Chr(13)
MSComm1.Output = Chr(0) & Chr(13) & Chr(10)
'MSComm1.NullDiscard = True
End Sub
Private Sub MSComm1_OnComm()
Dim s As String
'MSComm1.Output = Chr(1)
Select Case MSComm1.CommEvent
Case comEvSend
Case comEvReceive
s = MSComm1.Input
If s = Chr(13) Then
Text1.Text = s
Else
Text1.Text = s
End If
Case comEventRxOver
Text1.Text = " recveive buffer overfl0w"
Case Else
Text1.Text = "juist"
End Select
End Sub
Private Sub Timer1_Timer()
buffer = MSComm1.Input
'If (buffer = Null) Then
' Text1.Text = buffer
'End If
Text1.Text = buffer
' MsgBox buffer
End Sub
wanneer ik 1keer op de knop drukt gaat het goed
maar omdat MSComm1.Output = Chr(1) geen 'afsluit' char heeft blijft die denk ik in het apparaatje hangen.
zodra ik een 2e keer druk komt er nog een chr1 bij en ziet die dit als : ik moet op print 1 relay 1 aanzetten.
zodra ik de stekker die in de comport zit er uit haal na 1 keer op de knop te hebben gedrukt, en deze er weer in doe en weer druk werkt het. net zolang tot ik de stekker er na de eerste keer drukke niet uithaal.
op 1 of andere manier moet ik dus na het inlezen van een port
MSComm1.Output = Chr(1)
var = mscomm1.input
MSComm1.Output = afsluiten
zoiets
maar als je dus als afsluiter b.v.:
MSComm1.Output = Chr(1) & Chr(4)& Chr(10) &Chr(13)
zou doen dan gaat relay 3 dus aan 
ook kan ik niet
MSComm1.Output = Chr(1) & Chr(10) &Chr(13)
var = mscomm1.input
of
MSComm1.Output = Chr(1)
var = mscomm1.input
MSComm1.Output = Chr(10) &Chr(13)
omdatie dan die chr(10) als poort ziet die die moet schakelen
[Bericht gewijzigd door nash op ]