Mam przeogromną prośbę.
Czy da się zmienić tak kod (poniżej), aby pracował z zewnętrznymi przyciskami/przełącznikami ?
Chciałbym, aby to było tak:
-8 przekaźników sterowanych przez PC,
-4 wejścia wykorzystać do włączania/wyłączania przekaźników 1, 2, 3 i 4
Po prostu wszystkie przekaźniki sterowane z PC + przekaźniki 1-4 dodatkowo sterowane przez zewnętrzne przyciski/przełączniki (wejścia 1-4)-coś jakby przełączniki schodowe/krzyżowe-nie ważne gdzie włączę/wyłączę (PC lub przełącznik)
Włączę przełącznikiem, a mogę wyłączyć przez PC lub przełącznik i tak samo w drugą stronę-włączę przez PC, a mogę wyłączyć przez PC lub przełącznik.
Z góry dziękuję za pomoc. Pimowo.
Kod: Zaznacz cały
'******************************************
'******************************************
'** Karta wyjsc z interfejsem RS-485 **
'** Firmware v1.2 (06.08.2009) **
'** Projekt: Mariusz Ciszewski **
'** Publikacja: EP **
'** mariusz.ciszewski(malpa)elportal.pl **
'** Firmware v1.2a (21.09.2012) **
'******************************************
'******************************************
Const Fw = ", FV-1.2a"
$regfile = "ATtiny2313.DAT"
$crystal = 8000000
$baud = 4800
Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinb.4 = Output
Config Pinb.5 = Output
Config Pinb.6 = Output
Config Pinb.7 = Output
Config Portd.0 = Output
Config Portd.1 = Output
Config Portd.4 = Output
Out1 Alias Portb.7
Out2 Alias Portb.6
Out3 Alias Portb.5
Out4 Alias Portb.4
Out5 Alias Portb.3
Out6 Alias Portb.2
Out7 Alias Portb.1
Out8 Alias Portb.0
Nadawanie Alias Portd.4
Declare Sub Czekaj
Echo Off
Const Urzadzenie = "Urz: "
Dim Rozkaz As String * 4
Dim Opoznienie$ As Byte
Dim Numer_karty$ As Byte
Dim Numer_urzadzenia$ As Byte
Dim Stan$ As Byte
Dim Adres As Byte
Dim Zmienna_adresowa As String * 2
Dim Zmienna_interpretacyjna As String * 1
Dim Dr$ As Byte
Const Ramka = ": OK > [karta][urzadzenie][stan] "
'**********************************************************************
'*Tu nalezy ustawic adres karty, dla ktorej program jest przeznaczony
Adres = 01
'**********************************************************************
Call Czekaj
Set Nadawanie
Print
Print Urzadzenie ; Adres ; Fw ; Ramka
Printbin &H13
Reset Nadawanie
Do
Numer_karty$ = 0
Input Rozkaz
Dr$ = Len(rozkaz)
If Dr$ = 4 Then ' ograniczenie tylko dla ramek 4-bajtowych
Zmienna_adresowa = Left(rozkaz , 2 )
Numer_karty$ = Val(zmienna_adresowa)
Zmienna_interpretacyjna = Mid(rozkaz ,3 , 1)
Numer_urzadzenia$ = Val(zmienna_interpretacyjna)
Zmienna_interpretacyjna = Mid(rozkaz , 4 , 1)
Stan$ = Val(zmienna_interpretacyjna)
If Numer_karty$ = Adres Or Numer_karty$ = 99 Then
If Stan$ = 0 Then
Select Case Numer_urzadzenia$
Case 1 : Reset Out1
Case 2 : Reset Out2
Case 3 : Reset Out3
Case 4 : Reset Out4
Case 5 : Reset Out5
Case 6 : Reset Out6
Case 7 : Reset Out7
Case 8 : Reset Out8
Case 9 : Portb = 0
End Select
End If
If Stan$ = 1 Then
Select Case Numer_urzadzenia$
Case 1 : Set Out1
Case 2 : Set Out2
Case 3 : Set Out3
Case 4 : Set Out4
Case 5 : Set Out5
Case 6 : Set Out6
Case 7 : Set Out7
Case 8 : Set Out8
Case 9 : Portb = 255
End Select
End If
If Numer_karty$ = 0 Then Call Czekaj
Set Nadawanie
Print "Urzadzenie nr " ; Numer_urzadzenia$ ; " na karcie nr " ; Numer_karty$ ; " zostalo " ;
If Stan$ = 0 Then Print "wylaczone." ;
If Stan$ = 1 Then Print "wlaczone." ;
Print
Print
Print Urzadzenie ; Adres ; Fw ; Ramka
Print
Printbin &H13
Reset Nadawanie
End If
End If
Loop
Sub Czekaj
For Opoznienie$ = 1 To Adres
Waitms 150
Next Opoznienie$
End Sub
End