RS485 & RS232 - Invio singolo byte.md
... ...
@@ -0,0 +1,54 @@
1
+In questo esempio si inizializzano e si usano le seriali in ambiente linux in protocol mode 0 che si distingue dal mode 1 (detto anche protocol mode syel) per l'invio di singoli byte o pacchetti senza preambolo ne checksum e senza le funzioni di librieria syel.
2
+
3
+Nello start.c vengono eseguiti due task
4
+* rs485_task
5
+* rs232_task
6
+Le due funzioni che si vanno ad eseguire lanciando questi task sono presenti nel file common.h del progetto. Le prime linee di codice sono per l'inizializzazione e apertura della porta alle quali segue un ciclo infinito nel quale si resta in ascolto di eventuali byte in arrivo
7
+
8
+```
9
+void rs232_task(void)
10
+{
11
+ // inizializzazione porta 232
12
+ MY_COM232 = PortaCOM232;
13
+ com_close(MY_COM232);
14
+ wait(500);
15
+ com_open(MY_COM232, BaudRate232);
16
+ com_disable(MY_COM232);
17
+ protocol_mode(MY_COM232, 0); // protocollo 0 - invio singolo byte
18
+ com_enable(MY_COM232);
19
+
20
+ while(1) { //******* ricezione pacchetto **********
21
+ if (com_rx_empty(PortaCOM232)) {
22
+ _idle();
23
+ } else {
24
+ while (!com_rx_empty(PortaCOM232)) {
25
+ counter_232_packets_rx++;
26
+ retChar = com_rx(PortaCOM232);
27
+ }
28
+ }
29
+ }
30
+}
31
+```
32
+Nella ricezione del pacchetto si nota come la funzione resti in idle finchè non arriva niente, mentre scarrella byte con la com_rx() finche qualcosa è presente sul buffer incrementando cosi un contatore. Per la 485 è tutto analogo eccetto per la com che è ovviamente diversa.
33
+
34
+Per inviare il singolo byte si usa la funzione com_tx
35
+```
36
+void invia232(void)
37
+{
38
+ counter_232_packets_tx++;
39
+ com_tx(PortaCOM232, sendChar);
40
+}
41
+```
42
+
43
+Nota: com_tx e com_rx sono funzioni dell'ambiente di sviluppo proteus spiegate nel manuale a pagina 34 sezione Porte Seriali.
44
+
45
+Per quanto riguarda l'interfaccia dell esempio è molto banale e permette di selezionare un carattere e inviarlo tramite 232 o 485 incrementando i relativi contatori così come anche anche in ricezione
46
+
47
+
48
+L'esempio è stato testato su due dispositivi syel p10 collegati tra loro in RS232 e RS485 ed liberamente scaricabile dal seguente link:
49
+[scarica](https://drive.google.com/file/d/1mDu0ULT9rZRgjtvueTfuG594QQA66_V8/view?usp=sharing)
50
+
51
+2025-02-07 Creatore dell'articolo Simone De Santis. Per ulteriori richieste simone.desantis@syel.it
52
+
53
+
54
+
RS485 & RS232 - Invio singolo byte.mediawiki
... ...
@@ -1,54 +0,0 @@
1
-In questo esempio si inizializzano e si usano le seriali in ambiente linux in protocol mode 0 che si distingue dal mode 1 (detto anche protocol mode syel) per l'invio di singoli byte o pacchetti senza preambolo ne checksum e senza le funzioni di librieria syel.
2
-
3
-Nello start.c vengono eseguiti due task
4
-* rs485_task
5
-* rs232_task
6
-Le due funzioni che si vanno ad eseguire lanciando questi task sono presenti nel file common.h del progetto. Le prime linee di codice sono per l'inizializzazione e apertura della porta alle quali segue un ciclo infinito nel quale si resta in ascolto di eventuali byte in arrivo
7
-
8
-```
9
-void rs232_task(void)
10
-{
11
- // inizializzazione porta 232
12
- MY_COM232 = PortaCOM232;
13
- com_close(MY_COM232);
14
- wait(500);
15
- com_open(MY_COM232, BaudRate232);
16
- com_disable(MY_COM232);
17
- protocol_mode(MY_COM232, 0); // protocollo 0 - invio singolo byte
18
- com_enable(MY_COM232);
19
-
20
- while(1) { //******* ricezione pacchetto **********
21
- if (com_rx_empty(PortaCOM232)) {
22
- _idle();
23
- } else {
24
- while (!com_rx_empty(PortaCOM232)) {
25
- counter_232_packets_rx++;
26
- retChar = com_rx(PortaCOM232);
27
- }
28
- }
29
- }
30
-}
31
-```
32
-Nella ricezione del pacchetto si nota come la funzione resti in idle finchè non arriva niente, mentre scarrella byte con la com_rx() finche qualcosa è presente sul buffer incrementando cosi un contatore. Per la 485 è tutto analogo eccetto per la com che è ovviamente diversa.
33
-
34
-Per inviare il singolo byte si usa la funzione com_tx
35
-```
36
-void invia232(void)
37
-{
38
- counter_232_packets_tx++;
39
- com_tx(PortaCOM232, sendChar);
40
-}
41
-```
42
-
43
-Nota: com_tx e com_rx sono funzioni dell'ambiente di sviluppo proteus spiegate nel manuale a pagina 34 sezione Porte Seriali.
44
-
45
-Per quanto riguarda l'interfaccia dell esempio è molto banale e permette di selezionare un carattere e inviarlo tramite 232 o 485 incrementando i relativi contatori così come anche anche in ricezione
46
-
47
-
48
-L'esempio è stato testato su due dispositivi syel p10 collegati tra loro in RS232 e RS485 ed liberamente scaricabile dal seguente link:
49
-[https://drive.google.com/file/d/1mDu0ULT9rZRgjtvueTfuG594QQA66_V8/view?usp=sharing | scarica]
50
-
51
-2025-02-07 Creatore dell'articolo Simone De Santis. Per ulteriori richieste simone.desantis@syel.it
52
-
53
-
54
-