Помогите со скетчем
- Войдите на сайт для отправки комментариев
Вс, 23/10/2016 - 22:04
Скетч"Отслеживания посылки с помощтью GPS"Помогите мне поставить комментарии после каждой строки.
//передача данных на сервер
#include <SPI.h>
#include <Mirf.h>
#include <MirfHardwareSpiDriver.h>
#define MAX_BUFF 32
String mess = "",
mess2 = "",
result_mess = "";
char buff[MAX_BUFF],
check[MAX_BUFF];
int i = 0;
void setup(){
Serial.begin(9600);
Mirf.cePin = 48;
Mirf.csnPin = 53;
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"app1");
Mirf.setTADDR((byte *)"app2");
Mirf.payload = MAX_BUFF;
Mirf.channel = 10;
Mirf.config();
Serial.println("Start..");
}
void loop(){
boolean m1 = false,
m2 = false;
while (true) {
readMessage(buff);
switch(buff[0]) {
case '1':
check[0] = buff[2];
check[1] = buff[3];
m1 = true;
// Serial.print(check);
break;
case '2':
if(m1) {
mess += String(buff);
m1 = false;
m2 = true;
}
break;
case '3':
if(m2) {
mess.remove(0,2);
mess2 = String(buff);
mess2.remove(0,2);
mess += ',' + mess2;
m1 = false;
m2 = false;
if(Cheksum(check,mess))
{
Serial.println(mess);
}
mess = "";
mess2 = "";
}
break;
}
}
}
boolean Cheksum(char ch[],String mess)
{
byte r = 0;
byte sise=mess.length();
byte b[sise];
mess.getBytes(b,sise);
for(byte j=0;j<sise;j++)
r^=b[j];
return (atoi(ch) == r) ? true : false;
}
void readMessage(char *buff) {
if(Mirf.dataReady()) {
Mirf.getData((uint8_t *)buff);
}
}
//передача данных клиенту с GPS
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
#define MAX_BUFF 32 //буфер приема-передачи
static const int RXPin = 4, TXPin = 3;
TinyGPSPlus gps;
SoftwareSerial ss(RXPin, TXPin);
void setup()
{
Serial.begin(9600);
ss.begin(9600);
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.cePin=7;
Mirf.csnPin=8;
Mirf.setRADDR((byte *)"app2"); //Здесь задаём адрес
Mirf.payload = 32; //Здесь задаём буфер
Mirf.channel = 10;
Mirf.setTADDR((byte *)"app1");
Mirf.config();
}
void loop()
{
static boolean sch = true;
ss.println();
while (ss.available() > 0)
if (gps.encode(ss.read())&&gps.location.isValid()&& gps.date.isValid())
{
if(sch)
BildAndSendServer();
sch = (sch) ? false : true;
}
}
byte cheksum(String str)
{
byte r=0;
byte sise=str.length();
byte b[sise];
str.getBytes(b,sise);
for(byte i=0;i<sise;i++)
r^=b[i];
return r;
}
void BildAndSendServer()
{
double timed=gps.time.value()/100.0;
String message1 = String(timed)+","+String(gps.location.lat(),6)+","+String(gps.location.lng(),6)+",";
String message2=String(gps.speed.kmph())+","+String(gps.altitude.meters())+","+String(gps.course.deg());
char ch1[32], ch2[32],chek[7];
String cheks="1,"+String (cheksum(message1+message2));
message1="2,"+message1;
message2="3,"+message2;
message1.toCharArray(ch1,message1.length());
message2.toCharArray(ch2,message2.length()+1);
cheks.toCharArray(chek,7);
Mirf.send((uint8_t *)chek);
while(Mirf.isSending()){
}
delay(100);
Mirf.send((uint8_t *)ch1);
while(Mirf.isSending()){
}
delay(100);
Mirf.send((uint8_t *)ch2);
while(Mirf.isSending()){
}
delay(100);
}
//передача данных на сервер #include <SPI.h> #include <Mirf.h> #include <MirfHardwareSpiDriver.h> #define MAX_BUFF 32 String mess = "", mess2 = "", result_mess = ""; char buff[MAX_BUFF], check[MAX_BUFF]; int i = 0; void setup(){ Serial.begin(9600); Mirf.cePin = 48; Mirf.csnPin = 53; Mirf.spi = &MirfHardwareSpi; Mirf.init(); Mirf.setRADDR((byte *)"app1"); Mirf.setTADDR((byte *)"app2"); Mirf.payload = MAX_BUFF; Mirf.channel = 10; Mirf.config(); Serial.println("Start.."); } void loop(){ boolean m1 = false, m2 = false; while (true) { readMessage(buff); switch(buff[0]) { case '1': check[0] = buff[2]; check[1] = buff[3]; m1 = true; // Serial.print(check); break; case '2': if(m1) { mess += String(buff); m1 = false; m2 = true; } break; case '3': if(m2) { mess.remove(0,2); mess2 = String(buff); mess2.remove(0,2); mess += ',' + mess2; m1 = false; m2 = false; if(Cheksum(check,mess)) { Serial.println(mess); } mess = ""; mess2 = ""; } break; } } } boolean Cheksum(char ch[],String mess) { byte r = 0; byte sise=mess.length(); byte b[sise]; mess.getBytes(b,sise); for(byte j=0;j<sise;j++) r^=b[j]; return (atoi(ch) == r) ? true : false; } void readMessage(char *buff) { if(Mirf.dataReady()) { Mirf.getData((uint8_t *)buff); } } //передача данных клиенту с GPS #include <TinyGPS++.h> #include <SoftwareSerial.h> #include <SPI.h> #include <Mirf.h> #include <nRF24L01.h> #include <MirfHardwareSpiDriver.h> #define MAX_BUFF 32 //буфер приема-передачи static const int RXPin = 4, TXPin = 3; TinyGPSPlus gps; SoftwareSerial ss(RXPin, TXPin); void setup() { Serial.begin(9600); ss.begin(9600); Mirf.spi = &MirfHardwareSpi; Mirf.init(); Mirf.cePin=7; Mirf.csnPin=8; Mirf.setRADDR((byte *)"app2"); //Здесь задаём адрес Mirf.payload = 32; //Здесь задаём буфер Mirf.channel = 10; Mirf.setTADDR((byte *)"app1"); Mirf.config(); } void loop() { static boolean sch = true; ss.println(); while (ss.available() > 0) if (gps.encode(ss.read())&&gps.location.isValid()&& gps.date.isValid()) { if(sch) BildAndSendServer(); sch = (sch) ? false : true; } } byte cheksum(String str) { byte r=0; byte sise=str.length(); byte b[sise]; str.getBytes(b,sise); for(byte i=0;i<sise;i++) r^=b[i]; return r; } void BildAndSendServer() { double timed=gps.time.value()/100.0; String message1 = String(timed)+","+String(gps.location.lat(),6)+","+String(gps.location.lng(),6)+","; String message2=String(gps.speed.kmph())+","+String(gps.altitude.meters())+","+String(gps.course.deg()); char ch1[32], ch2[32],chek[7]; String cheks="1,"+String (cheksum(message1+message2)); message1="2,"+message1; message2="3,"+message2; message1.toCharArray(ch1,message1.length()); message2.toCharArray(ch2,message2.length()+1); cheks.toCharArray(chek,7); Mirf.send((uint8_t *)chek); while(Mirf.isSending()){ } delay(100); Mirf.send((uint8_t *)ch1); while(Mirf.isSending()){ } delay(100); Mirf.send((uint8_t *)ch2); while(Mirf.isSending()){ } delay(100); }Чего сделать? Комментарии расставить? А зачем?
Присоединяюсь к предыдущему оратору: "комментарии" делаются ДО написания кода, а НЕ ПОСЛЕ.
Механика такая:
1. Пишешь алгоритм по-русски. В текстовом редакторе.
2. Оформляешь их как комментарии в выбранном языке программирования.
3. Между ними вписываешь перевод с русского на выбранный язык программирования.
4. Все - код с комментариями готов.
//передача данных на сервер #include <SPI.h> // Мой дядя самых честных правил, #include <Mirf.h>// Когда не в шутку занемог, #include <MirfHardwareSpiDriver.h> //Он уважать себя заставил #define MAX_BUFF 32// И лучше выдумать не мог. String mess = "", // Его пример другим наука; mess2 = "", // Но, боже мой, какая скука result_mess = "";// С больным сидеть и день и ночь, char buff[MAX_BUFF],//Не отходя ни шагу прочь! check[MAX_BUFF];//Какое низкое коварство int i = 0;//Полуживого забавлять, void setup(){//Ему подушки поправлять, Serial.begin(9600);//Печально подносить лекарство, Mirf.cePin = 48;//Вздыхать и думать про себя: Mirf.csnPin = 53;//Когда же черт возьмет тебя!» Mirf.spi = &MirfHardwareSpi;//Так думал молодой повеса, Mirf.init();//Летя в пыли на почтовых, Mirf.setRADDR((byte *)"app1");//Всевышней волею Зевеса Mirf.setTADDR((byte *)"app2");//Наследник всех своих родных. — Mirf.payload = MAX_BUFF;//Друзья Людмилы и Руслана! Mirf.channel = 10;//С героем моего романа Mirf.config();//Без предисловий, сей же час Serial.println("Start..");//Позвольте познакомить вас: } void loop(){//Онегин, добрый мой приятель, boolean m1 = false,//Родился на брегах Невы, m2 = false;//Где, может быть, родились вы while (true) {//Или блистали, мой читатель; readMessage(buff);//Там некогда гулял и я: switch(buff[0]) {//Но вреден север для меня case '1'://Служив отлично-благородно, check[0] = buff[2];//Долгами жил его отец, check[1] = buff[3];//Давал три бала ежегодно m1 = true;//И промотался наконец. // Serial.print(check); break;//Судьба Евгения хранила: case '2'://Сперва Madame за ним ходила, if(m1) {//Потом Monsieur ее сменил; mess += String(buff);//Ребенок был резов, но мил. m1 = false;//Monsieur l’Abbe?, француз убогой, m2 = true;//Чтоб не измучилось дитя, } break;//Учил его всему шутя, case '3'://Не докучал моралью строгой, if(m2) {//Слегка за шалости бранил mess.remove(0,2);//И в Летний сад гулять водил. mess2 = String(buff);//Когда же юности мятежной mess2.remove(0,2);//Пришла Евгению пора, mess += ',' + mess2;//Пора надежд и грусти нежной, m1 = false;//Monsieur прогнали со двора. m2 = false;//Вот мой Онегин на свободе; if(Cheksum(check,mess))//Острижен по последней моде; { Serial.println(mess);//Как dandy лондонский одет — } mess = "";//И наконец увидел свет. mess2 = "";//Он по-французски совершенно } break;//Мог изъясняться и писал; } } } boolean Cheksum(char ch[],String mess)//Легко мазурку танцевал { byte r = 0;//И кланялся непринужденно; byte sise=mess.length();//Чего ж вам больше? Свет решил, byte b[sise];//Что он умен и очень мил. mess.getBytes(b,sise);//Мы все учились понемногу for(byte j=0;j<sise;j++)//Чему-нибудь и как-нибудь, r^=b[j];//Так воспитаньем, слава богу, return (atoi(ch) == r) ? true : false;//У нас немудрено блеснуть. } void readMessage(char *buff) {// if(Mirf.dataReady()) { Mirf.getData((uint8_t *)buff); } } //передача данных клиенту с GPS #include <TinyGPS++.h> #include <SoftwareSerial.h> #include <SPI.h> #include <Mirf.h> #include <nRF24L01.h> #include <MirfHardwareSpiDriver.h> #define MAX_BUFF 32 //буфер приема-передачи static const int RXPin = 4, TXPin = 3; TinyGPSPlus gps; SoftwareSerial ss(RXPin, TXPin); void setup() { Serial.begin(9600); ss.begin(9600); Mirf.spi = &MirfHardwareSpi; Mirf.init(); Mirf.cePin=7; Mirf.csnPin=8; Mirf.setRADDR((byte *)"app2"); //Здесь задаём адрес Mirf.payload = 32; //Здесь задаём буфер Mirf.channel = 10; Mirf.setTADDR((byte *)"app1"); Mirf.config(); } void loop() { static boolean sch = true; ss.println(); while (ss.available() > 0) if (gps.encode(ss.read())&&gps.location.isValid()&& gps.date.isValid()) { if(sch) BildAndSendServer(); sch = (sch) ? false : true; } } byte cheksum(String str) { byte r=0; byte sise=str.length(); byte b[sise]; str.getBytes(b,sise); for(byte i=0;i<sise;i++) r^=b[i]; return r; } void BildAndSendServer() { double timed=gps.time.value()/100.0; String message1 = String(timed)+","+String(gps.location.lat(),6)+","+String(gps.location.lng(),6)+","; String message2=String(gps.speed.kmph())+","+String(gps.altitude.meters())+","+String(gps.course.deg()); char ch1[32], ch2[32],chek[7]; String cheks="1,"+String (cheksum(message1+message2)); message1="2,"+message1; message2="3,"+message2; message1.toCharArray(ch1,message1.length()); message2.toCharArray(ch2,message2.length()+1); cheks.toCharArray(chek,7); Mirf.send((uint8_t *)chek); while(Mirf.isSending()){ } delay(100); Mirf.send((uint8_t *)ch1); while(Mirf.isSending()){ } delay(100); Mirf.send((uint8_t *)ch2); while(Mirf.isSending()){ } delay(100); }Очевидно что недокомментировали код)
#include <SPI.h> // Мой дядя самых честных правил,А чего не до конца?
Чем-то Вы мне другого Онегина напомнили .... :)
Механика такая:
...
Мне представляется здесь другой алгоритм:
1. Получить задание
2. Поискать готовое решение в сети
3. ЕСЛИ (нашёл) скачать ИНАЧЕ раскрутить кого-нибудь на форуме написать
4. Нихрена не понять
5. Раскрутить кого-нибудь построчно объяснить (Сейчас на этой фазе!)
6. Нихрена не понять
7. Пойти сдавать
8. ЕСЛИ (препод давно на всё забил) спокойно сдать ИНАЧЕ {
a. Провалиться на первом же вопросе
b. Заявить, что препод - козёл
c. Намекнуть на сексуальные домогательства с его стороны
}
9. Так нихрена и не понять
Ну да:Мы все учились понемногу
Чему-нибудь и как-нибудь,
Так воспитаньем, слава богу,
У нас немудрено блеснуть.
#include <TinyGPS++.h> //Кому не скучно лицемерить,
Не за что, заходите ещё.