Hallo
Vielleich hat jemand von euch eine Idee oder Hinweis.
Ich habe ein Freeduino per NewSoftUART Pin 2,3 (da Ausgabe per Terminal
über USB erfolgt und daher Pin 0,1 belegt ist) mit mit einen TCM120 von
EnOcean.
Die Ausgabe von Telegrammen funktioniert ausgezeichnet. Jetzt würde ich
gerne den TCM per Befehl (Transmit Command Telegram) ansprechen und die
Antwort (RMT) an den Terminal ausgeben.
TX_TELEGRAM sollte eigentlich OK zurückgeben.
Was mache ich falsch?
Wie bekomme ich die 127 AdressID zum anlernenvon Aktoren?
1 | /**
| 2 | * Auslesen/Aufrufen TCM120
| 3 | *
| 4 | * TCM120
| 5 | * Tx[Pin8]->Arduino Rx[Pin2]
| 6 | * Rx[Pin7]->Arduino Tx[Pin3]
| 7 | *
| 8 | * @V0.1 2011.07.23: Auslesen Telegram TCM120
| 9 | * @V0.2 2011.07.24: Befehle an TCM120 per Terminal senden
| 10 | * @copyright
| 11 | * @license
| 12 | */
| 13 |
| 14 | #include <NewSoftSerial.h>
| 15 |
| 16 | //**** VARIABLEN
| 17 | byte bTcmTx=0;
| 18 | int ledPin=13;
| 19 |
| 20 | //**** NewSoft Parameter
| 21 | const int rxPin=2, txPin=3 ;
| 22 | NewSoftSerial mySerial(rxPin, txPin);
| 23 |
| 24 | //**** EINGABE mit CR
| 25 | #define INLENGTH 20
| 26 | #define INTERMINATOR 13
| 27 |
| 28 |
| 29 | /**
| 30 | * Setup konfiguriert Digitalport, Ports, ect
| 31 | */
| 32 | void setup()
| 33 | {
| 34 | //**** Led Test
| 35 | pinMode(ledPin,OUTPUT);
| 36 | digitalWrite(ledPin,HIGH);
| 37 | delay(150);
| 38 | digitalWrite(ledPin,LOW);
| 39 |
| 40 | //**** Datenrate Terminal
| 41 | Serial.begin(9600);
| 42 | Serial.println("Telegramme TCM120");
| 43 |
| 44 | //**** Datenrate fuer SoftUART Tx/Rx Schnittstelle - absenden Transmit Command Telegram an TCM120
| 45 | mySerial.begin(9600);
| 46 | mySerial.print("TX_TELEGRAM");
| 47 |
| 48 | }
| 49 |
| 50 |
| 51 | /**
| 52 | * Schleife
| 53 | * Liest TCM120 Telegramme ueber SoftUART Tx an Terminal aus
| 54 | */
| 55 | void loop() // run over and over again
| 56 | {
| 57 |
| 58 | //**** Ausgabe Terminal Telegramme
| 59 | if (mySerial.available()) {
| 60 | //**** Zeilenvorschub vor A5
| 61 | bTcmTx=(char)mySerial.read();
| 62 | if(bTcmTx==165){
| 63 | Serial.println("");
| 64 | digitalWrite(ledPin,HIGH);
| 65 | delay(150);
| 66 | digitalWrite(ledPin,LOW);
| 67 | }
| 68 | Serial.print(bTcmTx,HEX);
| 69 | }
| 70 |
| 71 | //**** Ausgabe Terminal
| 72 | if (Serial.available()) {
| 73 | mySerial.print((char)Serial.read());
| 74 | }
| 75 | }
|
Vielen Dank im voraus
Bin in der Zwischenzeit weiter, habe trotzden noch ein Problem
Beim Befehl INF_INIT
[A5][5A][8B][89][00][00][00][00][00][00][00][00][Chk]
sollten 15 Telegramme kommen
0xA5 0x5A 0x8B 0x89 ""
0xA5 0x5A 0x8B 0x89 "EnOcean"
0xA5 0x5A 0x8B 0x89 "TCM120"
0xA5 0x5A 0x8B 0x89 "Version"
....usw
Ich bekomme zwar Antworten jedoch nur hat das keine Ähnlichkeit mit den
Beschrieben.
Hat jemand eine Ahnung an was es liegt?
Quellcode
1 | #include <NewSoftSerial.h>
| 2 |
| 3 | //**** VARIABLEN
| 4 | byte bTcmTx=0;
| 5 | int ledPin=13;
| 6 | int packet[14];
| 7 | int j;
| 8 |
| 9 | //**** NewSoft Parameter
| 10 | const int rxPin=2, txPin=3 ;
| 11 | NewSoftSerial mySerial(rxPin, txPin);
| 12 |
| 13 |
| 14 | /**
| 15 | * Setup konfiguriert Digitalport, Ports, ect
| 16 | */
| 17 | void setup()
| 18 | {
| 19 | //**** Led Test
| 20 | pinMode(ledPin,OUTPUT);
| 21 | digitalWrite(ledPin,HIGH);
| 22 | delay(150);
| 23 | digitalWrite(ledPin,LOW);
| 24 |
| 25 | //**** Datenrate Terminal
| 26 | Serial.begin(9600);
| 27 | Serial.println("Telegramme TCM120");
| 28 |
| 29 | //**** Datenrate fuer SoftUART Tx/Rx Schnittstelle - absenden Transmit Command Telegram an TCM120
| 30 | mySerial.begin(9600);
| 31 |
| 32 | //**** INR_INIT holt Informationen ueber TCM120
| 33 | send_packet(0x8B,0x89,0,0,0,0,0,0,0,0);
| 34 |
| 35 | }
| 36 |
| 37 |
| 38 | /**
| 39 | * Schleife
| 40 | * Liest TCM120 Telegramme ueber SoftUART Tx an Terminal aus
| 41 | */
| 42 | void loop() // run over and over again
| 43 | {
| 44 | get_packet();
| 45 | }
| 46 |
| 47 |
| 48 | /**
| 49 | * Holt Telegramm von TCM120
| 50 | */
| 51 | void get_packet()
| 52 | {
| 53 | if (mySerial.available()) {
| 54 | //**** Zeilenvorschub vor A5
| 55 | bTcmTx=(char)mySerial.read();
| 56 | if(bTcmTx==165){
| 57 | Serial.println("");
| 58 | }
| 59 | Serial.print(bTcmTx,HEX);
| 60 | }
| 61 | if (Serial.available()) {
| 62 | mySerial.print((char)Serial.read());
| 63 | }
| 64 | }
| 65 |
| 66 |
| 67 | /**
| 68 | * Sendet Telegramm an TCM120
| 69 | */
| 70 | void send_packet(int typ,int cmd,int D3,int D2,int D1,int D0,int D_3,int D_2,int D_1,int D_0)
| 71 | {
| 72 | mySerial.print(0xA5,BYTE);
| 73 | mySerial.print(0x5A,BYTE);
| 74 | mySerial.print(typ,BYTE);
| 75 | mySerial.print(cmd,BYTE);
| 76 | mySerial.print(D3,BYTE);
| 77 | mySerial.print(D2,BYTE);
| 78 | mySerial.print(D1,BYTE);
| 79 | mySerial.print(D0,BYTE);
| 80 | mySerial.print(D_3,BYTE);
| 81 | mySerial.print(D_2,BYTE);
| 82 | mySerial.print(D_1,BYTE);
| 83 | mySerial.print(D_0,BYTE);
| 84 | mySerial.print(0,BYTE);
| 85 | mySerial.print(0xff & (typ+cmd+D3+D2+D1+D0+D_3+D_2+D_1+D_0));
| 86 | }
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
|