# Programmas / Software >  ESP8266 UDP nosūtīšana caur serial

## sasasa

Ar ESP8266 saņemu caur WiFi UDP paketi. Tālāk viņa man jānosūta caur seriālo Tx un Arduino Rx. Šobrīd es daru tā - viņu ielādēju ESP8266 buferī tālāk pārsūtu no bufera. Varbūt ir iespējams izslēgt šo saglabāšanas posmu ESP8266 buferī un pa tiešo nosūtīt datus uz Arduino, lai tad tas nodarbojas ar šo datu uzkrāšanu savā buferī un tālāku apstrādi? Tipa tā - ko ESP8266 saklausa ienakošā portā, to arī uzreiz izvada uz serialo Tx. Mēģinaju to izdarīt ar Serial.write(UDP.read()); bet tur kaut kāds sviests sanāk, laikam ko galīgi aplam daru...  ::

----------


## next

> Šobrīd es daru tā - viņu ielādēju ESP8266 buferī tālāk pārsūtu no bufera..


 Tas ir pareizi, tikai pa starpu datus vajag filtreet, ne jau visu drazu taalaak jaasuuta.

----------


## sasasa

Tnx. Nu tad varu neķert kreņķi ka kaut ko ne tā daru. Par kādu filtrēšanu domā - kāda tur draza vēl?
Manā gadījumā notiek konkrēta vārda meklēšana , ja to atrod, tad sūta prom visu paku. Kaut gan teorētiski varētu neko nemeklēt, jo it kā neko citu tur nesūtu - pats jau otrā galā no mobīlās aplikācijas vien bīdu tos sliderus/faderus  :: 



```
p1 = strstr(packetBuffer, "fadder"); 
p2 = strstr(packetBuffer, "toggle"); 
p3 = strstr(packetBuffer, "push");

if(p1 || p2 || p3) Serial.write(packetBuffer,packetSize);
```

 Vai varbūt var arī kā vienkāršāk to uzraxtīt? Un varbūt strstr() vietā citu lietot, bet ar šo arī viss sanāk  ::

----------


## sasasa

Novienkāršoju visu to lietu līdz 1 ridiņai un viss darbojas TIEŠI tāpat, ka ar to strstr(). Nezinu kapēc sākumā man tur kaut kas gļukoja un pa vidu gāja visādi mēsli. 



```
Serial.write(packetBuffer,packetSize);

```

 It kā viss labi - otrā galā viss kustas un darbojas. Ir neliela aizture, kas sevišķi netraucē, BET kaut kas tomēr nav labi. Seriālā monitorā (pie ieejas Arduino Rx) ir šāda bilde (skat. apakšā textu)  ::  Baudrate man 115200.  Sajūta tāda, ka kaut kas pārpildās no tiem datiem, bet kas nevaru saprast. Kad mēģināju pārsūtīt datus nevis tādus kā ienāk UDP buferī, bet jau atšifrētas vērtības, Piem. šādi _fad1=0.15, fad2=0.75, push=1, tad pārraide bija krietni jestrāka un BEZ jebkādām kļūdām. 

_Kas varētu būt par vainu? Varbūt ir jau iepriekš zināma kāda diagnoze?

_/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2
Communications Error - Check baud rate_
_/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2
Communications Error - Check baud rate_
_/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2
Communications Error - Check baud rate_
_/2/fader2
Communications Error - Check baud rate_
_/2/fader2
Communications Error - Check baud rate_
_/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2/2/fader2/1/1/fader1/1/fader1/1/fader1
Communications Error - Check baud rate_
_/1/fader1/1/fader1/1/fader1/1/fader1/1/fader1/1/fader1/1/fader1/1/fader1/1/fader1/1/fader1/1/fader1/1/fader1/1/fader1
Communications Error - Check baud rate_
_/1/fader1,f
Communications Error - Check baud rate_
_/1/fader2/1/fader1,f/1/fader2/1/fader2/1/fader2/1/fader1/1/fader1/1/fader1/1/fader1/1/fader1
Communications Error - Check baud rate_
_/1/fader1/1/fader1/1/fader1/1/fader1/1/fader1,f/1/fader2/1/fader2,f,f/1/fader2/1/fader1/1/fader1/1/fader1/1/fader1/1/fader1


_Šajā redzmajā textā nav redzami visi simboli un vērtības, lai gan patiesība tie ir, jo bufera pilns texts ir apmēram šāds  
_/1/fader1 ,f    xxxx
Tas kas te redzams ir pietiekosi, vienīgi ja nebūtu to Erroru_

----------


## JDat

Pmēģini nosūtīt kaut ko īsāku... Piemēram 0x55 un 0xAA nevis tekstu. Rodas iespaids ka vai nu na pareisi saknofigurēts ESP8266 vai arī jaam buferis pārpilsās. Vai nu sāc ar kaut ko vienāršāku vai uzmanīgi izpēti esosās standarta bibliotēkas. Nav nekādā garantija ka stulbais koderis-wannabie ir uzrakstījis līku bibliotēku.

----------


## next

> _
> Communications Error - Check baud rate_


 Tas vareetu buut taapeec ka datu formaati nesakriit.
Piemeeram raidiitaajs raida 8-N-1 bet uztveereejs otraa galaa meegjina paritaates bitu chekot.

----------


## sasasa

Šodien pamēģināju nesūtīt Serial.write(packetBuffer,packetSize);, bet gan vienkārši 22 zīmju rindu (packetBuffer packet size man nav lielāks par 20).
Sūtot  skaitļu rindu  _Serial.write("01234567890123456789xx");_ NAV nekādu erroru.
Loģiski kaut kas viņam nepatīk tajā buferī, kas jāsūta, bet tik nesaprotu KAS var nepatikt? Kas tur ir to arī nosūta, kaut vai tur mātes vārdi iekšā. Vai es ne tā saprotu visu to padarīšanu?




> Tas vareetu buut taapeec ka datu formaati nesakriit.
> Piemeeram raidiitaajs raida 8-N-1 bet uztveereejs otraa galaa meegjina paritaates bitu chekot.


 Kur un kā to varetu pārbaudīt un piekoriģēt? Un vai tas var būt pie vainas, ja nekustinot buferi, bet sūtos skaitļu rindu kļūdu nav?

----------


## next

Nu padomaa - ja man raidiitaajs 8-N-1 bet uztveereejs 7-N-2.
Kas notiks ja raidiishu ASCII kodus un kas ja binaarie dati tai raidiijumaa buus?

PS. Luudzu atvainot, pats saputrojos, shai gadiijumaa erroriem jaabuut visu laiku.

----------


## sasasa

> Nu padomaa - ja man raidiitaajs 8-N-1 bet uztveereejs 7-N-2.
> Kas notiks ja raidiishu ASCII kodus un kas ja binaarie dati tai raidiijumaa buus?


 Piedod next, bet es esmu pilnīgs ambālis šajās lietās  :: 
Vari kaut kā uz pirxtiem man paskaidrot kas būtu jāizdara vai jāparbauda. Nesaprotu es īsti kas ir 8-N-1 un kas 7-N-2. 
Zinu tikai to ka ja sūtu no TouchOSC (uz mobīlā) datus lēni (pogas on/off vai toggle buttons vai slaideri ar īsiem pieskārieniem), tad erroru nav, bet tikko kustinu slaideri/fader, un datu plūsma ir lielāka, tad sākumā kādas pakas 3..4..5... atnāk normāli (citreiz vairāk, citreiz mazāk), bet pēc tam ERROR. Ja uztaisu pauzi un kādu brīdi neko nespiežu, tad atkal sūtās normāli. 
Vai tad jau ar pirmo paku nevajadzētu uzkārties, ja tur nesakrīt tā paritātes čekosana utt.. ?
Pie kam maldina fakts ka tomēr gala ierīcē viss kustas un darbojas. Un tie dati pareizie nonāk tur kur viņiem jānonāk. Bet nu tomēr gribas līdz galam izkost so lietu  ::

----------


## next

> Piedod next, bet es esmu pilnīgs ambālis šajās lietās 
> Vari kaut kā uz pirxtiem man paskaidrot kas būtu jāizdara vai jāparbauda. Nesaprotu es īsti kas ir 8-N-1 un kas 7-N-2. 
> 
> 
> Seriālā monitorā (pie ieejas Arduino Rx) ir šāda bilde


 Es taa saprotu ka kljuudu raada tas "seriaalais monitors", vot vinjam datu formaatu var un vajag paarbaudiit.
Pastaav iespeeja ka kljuuda tiek konstateeta paraadoties 1 raidaamaa baita vecaakajaa bitaa (ASCII simboliem tur vienmeer 0).

PS. Piemeeram - tx darbojas formaataa 8N1 bet monitors noskanjots sanjemt 7S1.
Kameer tiek raidiiti ascii kodi, kljuudu nebuus bet sanjemot 1 vecaakajaa bitaa - error.

http://en.wikipedia.org/wiki/Parity_bit

----------


## sasasa

Tnx!! ! Tā arī bija. Izrādās ka viss strāada normāli, tikai tas monitors man smadzenes pūderēja. Nomainīju bitu sjskaitu uz 7 un arī kļūdas pazuda  ::

----------

