Advertisement
Hubert_M

Untitled

Jun 13th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.93 KB | None | 0 0
  1. #include <SPI.h>
  2. #include <mcp_can.h>
  3.  
  4. int CSPin = 10; // numer pina CS
  5. MCP_CAN CAN(CSPin);
  6.  
  7. /* --- Odebrane --- */
  8. long unsigned int Id;
  9. unsigned char len = 0;
  10. unsigned char buf[8];
  11. /* --- Odebrane --- */
  12.  
  13. /* --- Wysylka --- */
  14. int Value = 0;
  15. int wys = 1;
  16. unsigned char stmp[2]; // dane przygotowane do wysłania
  17. /* --- Wysylka --- */
  18.  
  19.  
  20. /* --- Pierwsza wiadomosc --- */
  21. unsigned char firstMessage[2] = {4, 0};
  22. unsigned char receivedMessage[2];
  23. /* --- Pierwsza wiadomosc --- */
  24.  
  25. /* --- Logowanie --- */
  26. unsigned char loginMessage[2] = {1, 0};
  27. unsigned char receivedLoginMessage[2];
  28. /* --- Logowanie --- */
  29.  
  30. void setup()
  31. {
  32.   /* --- Konfiguracja --- */
  33.   Serial.begin(9600);
  34.  
  35.   if (CAN.begin(MCP_ANY, CAN_100KBPS, MCP_8MHZ) == CAN_OK)
  36.     Serial.println("Inicjalizacja mcp2515 udana! Arduino 1");
  37.   else Serial.println("Błąd w inicjalizacji mcp2515 :(");
  38.  
  39.   CAN.setMode(MCP_NORMAL);
  40. }
  41.  
  42. /* --- Konfiguracja --- */
  43. void loop()
  44. {
  45.   /* --- Odczyt z seriala  --- */
  46.   if (wys) {
  47.     wys = 0; // oznaczenie że dane nie zostały jeszcze wysłane po prośbie o cyfrę
  48.     Serial.println("Wpisz cyfrę od 1 do 8 aby ją wysłać!"); // wypisanie na serial prośby o cyfrę
  49.   }
  50.  
  51.   if (Serial.available() > 0 ) { // sprawdzanie czy na serialu oczekują jakieś dane do odbioru
  52.     char val = Serial.read();  // odczytanie danych z serialu do zmiennej val
  53.     if (val >= '1' && val <= '8') { // sprawdzanie czy wprowadzona wartość jest cyfrą
  54.       for (int i = 0; i < val - 48; i++) { // przygotowanie danych do wysłania, ramka będzie długości takiej jak podana cyfra, val jest charem daltego należy odjąć 48 aby zachować wartość cyfry
  55.         stmp[i] = val - 48; // przypisanie wartości do poszczególnych miejsc w tablicy
  56.       }
  57.  
  58.       Serial.println(val); // wypisanie na serial wpisanej cyfry
  59.       CAN.sendMsgBuf(0x10, 0, 2, stmp); // wysłanie wiadomośći od długości podanej przez użytkownika, wypełnionej podaną cyfrą
  60.     }
  61.     Serial.print("XD");
  62.     wys = 1; // oznaczenie że dane zostały już wysłane i można prosić o kolejną cyfrę
  63.   }
  64.  
  65.   /* --- Odczyt z seriala  --- */
  66.  
  67.   /* --- Pierwsza wiadomosc --- */
  68.   if (Value == 0) {
  69.     if (CAN_MSGAVAIL == CAN.checkReceive())
  70.     {
  71.       CAN.readMsgBuf(&Id, &len, receivedMessage);
  72.       //Serial.println(receivedMessage[0]);
  73.       if (receivedMessage[0] == 5) {
  74.         Value = 1;
  75.         Serial.println("Pomyslnie zainicjalizowano polaczenie");
  76.         delay(1000);
  77.       }
  78.       else
  79.         Serial.println("Blad polaczenia");
  80.     }
  81.   }
  82.   /* --- Pierwsza wiadomosc --- */
  83.  
  84.   /* --- Logowanie --- */
  85.   if (Value == 1) {
  86.     if (CAN_MSGAVAIL == CAN.checkReceive()) {
  87.       CAN.readMsgBuf(&Id, &len, receivedLoginMessage);
  88.       if (receivedLoginMessage[0] == 9) {
  89.         Serial.println("Zalogowano Pomyslnie");
  90.         Value = 2;
  91.       }
  92.       else
  93.         Serial.println("Blad logowania");
  94.     }
  95.   }
  96.   /* --- Logowanie --- */
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement