<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=23203&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2020-06-15T20:06:51+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=23203&amp;mode</id>
<entry>
<author><name><![CDATA[Nef.ID]]></name></author>
<updated>2020-06-15T20:06:51+01:00</updated>
<published>2020-06-15T20:06:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23203&amp;p=227915#p227915</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23203&amp;p=227915#p227915"/>
<title type="html"><![CDATA[Re: Dwa kursory w Menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23203&amp;p=227915#p227915"><![CDATA[
Przesyłam, bo wspomniałem o drugim moim przypadku, to aby nie być gołosłownym.<br /><br />Aczkolwiek przesyłam to tylko, nie żeby ktoś to analizował, tylko aby udokumentować przypadki, że coś można gdzieś w programie zepsuć, a wyjdzie w innym miejscu.<br />[syntax=c]int8_t sendsms_as_pdu( const char * tel, const char * text, uint8_t flashsms, uint8_t report, uint8_t ucs2, uint8_t from_ram ) {<br /><br />...<br />        if( !from_ram ) {<br />memcpy_P( out_sms.text, text, out_sms.len );<br />convert_pl_to_ascii_P( text, out_sms.text, out_sms.len );<br />} else {<br />memcpy( out_sms.text, text, out_sms.len );<br />convert_pl_to_ascii( text, out_sms.text, out_sms.len );<br />}<br />        ...<br />////////////////////////////////jest<br />lcd_cls();<br />lcd_locate( 0, 0 );<br />lcd_str(&quot;dup&quot;);<br />lcd_str( out_sms.text );<br />lcd_str(&quot;xyz&quot;);<br />////////////////////////////////////////////////<br /><br />// sprawdzamy czy jest podany numer 11 cyfrowy czyli: (2 cyfry) kod kraju + (9 cyfr) numer telefonu<br />if( 11 == len_tel ) strcat_P( out_sms.tel, tel );<br />else {  // jeśli numer jest tylko 9 cyfrowy to dodajemy domyślnie ustawiony kod kraju<br />strcat( out_sms.tel, gsm.default_country_code );<br />if( !from_ram ) strcat_P( out_sms.tel, tel );<br />else strcat( out_sms.tel, tel );<br />len_tel = 11;<br />}<br /><br />oct = out_sms.len;<br />if( !ucs2 ) {<br />//obliczenie długości łańcucha znaków po zakodowaniu<br />if(oct&gt;7) i = oct / 8; else i=0;//licząc od &quot;pierwszego oktetu&quot;<br />oct = i * 7 + oct % 8;<br />}<br /><br />oct += 15 - 1; // -1 bo dla Fibocom: &lt;length&gt; Size of message in PDU mode format, in octets, excluding SMSC data.<br /><br />pdu.SCA = 0x00;// domyślnie Service Center Address ustawiamy na 0x00 wtedy będzie użyty<br />// SCA zapisany na karcie SIM który dostępny jest poleceniem AT+SCCA<br />pdu.PDU_TYPE.byte = 0;// zerujemy PODU_TYPE<br />pdu.PDU_TYPE.MTI = 1;// Submit SMS  - SMS wychodzący (outgoing)<br />pdu.PDU_TYPE.VPF = 2;// Validity range (okres ważności - relatywny)<br /><br />if( report ) pdu.PDU_TYPE.SRR = 1;// Status Report request (wymagany raport doręczenia)<br />else pdu.PDU_TYPE.SRR = 0;// bez raportu doręczenia<br /><br />pdu.MR = 0x00;// Message reference ustawiamy na zero bo do niczego nam się nie przyda inna wartość<br /><br />pdu.DA.LEN = len_tel;<br />pdu.DA.TYPE = 0x91;// typ numeru telefonu - międzynarodowy czyli musi rozpoczynać się country code<br /><br />tel_to_pdu( out_sms.tel, pdu.DA.NUM );<br /><br />pdu.PID = 0x00;// Protocol Identifier - ustawiamy tylko 0x00 bo to oznacza po prostu SMS<br /><br />//************** FLASH albo NORMAL SMS *****************************************<br />if( flashsms ) pdu.DCS = DCS_MSG_CLASS_0_FLASH;// FLASH SMS<br />else pdu.DCS = DCS_MSG_NO_CLASS;// NORMAL SMS<br /><br />if( ucs2 ) pdu.DCS |= DCS_MSG_ALPHABET_UCS2;<br /><br />pdu.VP= VALIDITY_DAYS( 4 );// okres ważności SMS'a = 4 dni<br /><br />pdu.UDL= out_sms.len;// ilość znaków tekstu<br /><br />char buf&#91;5&#93;;<br />memset( buf, 0, 5 );<br />buf&#91;0&#93; = '=';<br />itoa( oct, buf+1, 10 );<br /><br />lib_at( _at_cmgs, NULL, buf, DEFAULT_SMS_TIMEOUT );<br />/////////////////////////////////////////////nie ma<br />//lcd_cls();<br />lcd_locate( 1, 0 );<br />lcd_str(&quot;dup&quot;);<br />lcd_str( out_sms.text );<br />lcd_str(&quot;xyz&quot;);<br />//////////////////////////////////////////////[/syntax]<br />W linii zerowej otrzymuję dupABCxyz, bo text przesłany to ABC.<br />W linii pierwszej wyświetlacza mam dupxyz, z kolei wysłana wiadomość SMS-a trzy znaki, pierwszy 0, drugi B, trzeci C.<br />Jak widać po drodze nic nie zmienia zawartości out_sms.text, a linia 0 i 1 się różni.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8366">Nef.ID</a> — 15 cze 2020, o 20:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nef.ID]]></name></author>
<updated>2020-06-15T20:06:50+01:00</updated>
<published>2020-06-15T20:06:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23203&amp;p=227914#p227914</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23203&amp;p=227914#p227914"/>
<title type="html"><![CDATA[Re: Dwa kursory w Menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23203&amp;p=227914#p227914"><![CDATA[
Przesyłam, bo wspomniałem o drugim moim przypadku, to aby nie być gołosłownym.<br /><br />Aczkolwiek przesyłam to tylko, nie żeby ktoś to analizował, tylko aby udokumentować przypadki, że coś można gdzieś w programie zepsuć, a wyjdzie w innym miejscu.<br />[syntax=c]int8_t sendsms_as_pdu( const char * tel, const char * text, uint8_t flashsms, uint8_t report, uint8_t ucs2, uint8_t from_ram ) {<br /><br />...<br />        if( !from_ram ) out_sms.len = strlen_P( text );<br />else out_sms.len = strlen( text );<br />        ...<br />////////////////////////////////jest<br />lcd_cls();<br />lcd_locate( 0, 0 );<br />lcd_str(&quot;dup&quot;);<br />lcd_str( out_sms.text );<br />lcd_str(&quot;xyz&quot;);<br />////////////////////////////////////////////////<br /><br />// sprawdzamy czy jest podany numer 11 cyfrowy czyli: (2 cyfry) kod kraju + (9 cyfr) numer telefonu<br />if( 11 == len_tel ) strcat_P( out_sms.tel, tel );<br />else {  // jeśli numer jest tylko 9 cyfrowy to dodajemy domyślnie ustawiony kod kraju<br />strcat( out_sms.tel, gsm.default_country_code );<br />if( !from_ram ) strcat_P( out_sms.tel, tel );<br />else strcat( out_sms.tel, tel );<br />len_tel = 11;<br />}<br /><br />oct = out_sms.len;<br />if( !ucs2 ) {<br />//obliczenie długości łańcucha znaków po zakodowaniu<br />if(oct&gt;7) i = oct / 8; else i=0;//licząc od &quot;pierwszego oktetu&quot;<br />oct = i * 7 + oct % 8;<br />}<br /><br />oct += 15 - 1; // -1 bo dla Fibocom: &lt;length&gt; Size of message in PDU mode format, in octets, excluding SMSC data.<br /><br />pdu.SCA = 0x00;// domyślnie Service Center Address ustawiamy na 0x00 wtedy będzie użyty<br />// SCA zapisany na karcie SIM który dostępny jest poleceniem AT+SCCA<br />pdu.PDU_TYPE.byte = 0;// zerujemy PODU_TYPE<br />pdu.PDU_TYPE.MTI = 1;// Submit SMS  - SMS wychodzący (outgoing)<br />pdu.PDU_TYPE.VPF = 2;// Validity range (okres ważności - relatywny)<br /><br />if( report ) pdu.PDU_TYPE.SRR = 1;// Status Report request (wymagany raport doręczenia)<br />else pdu.PDU_TYPE.SRR = 0;// bez raportu doręczenia<br /><br />pdu.MR = 0x00;// Message reference ustawiamy na zero bo do niczego nam się nie przyda inna wartość<br /><br />pdu.DA.LEN = len_tel;<br />pdu.DA.TYPE = 0x91;// typ numeru telefonu - międzynarodowy czyli musi rozpoczynać się country code<br /><br />tel_to_pdu( out_sms.tel, pdu.DA.NUM );<br /><br />pdu.PID = 0x00;// Protocol Identifier - ustawiamy tylko 0x00 bo to oznacza po prostu SMS<br /><br />//************** FLASH albo NORMAL SMS *****************************************<br />if( flashsms ) pdu.DCS = DCS_MSG_CLASS_0_FLASH;// FLASH SMS<br />else pdu.DCS = DCS_MSG_NO_CLASS;// NORMAL SMS<br /><br />if( ucs2 ) pdu.DCS |= DCS_MSG_ALPHABET_UCS2;<br /><br />pdu.VP= VALIDITY_DAYS( 4 );// okres ważności SMS'a = 4 dni<br /><br />pdu.UDL= out_sms.len;// ilość znaków tekstu<br /><br />char buf&#91;5&#93;;<br />memset( buf, 0, 5 );<br />buf&#91;0&#93; = '=';<br />itoa( oct, buf+1, 10 );<br /><br />lib_at( _at_cmgs, NULL, buf, DEFAULT_SMS_TIMEOUT );<br />/////////////////////////////////////////////nie ma<br />//lcd_cls();<br />lcd_locate( 1, 0 );<br />lcd_str(&quot;dup&quot;);<br />lcd_str( out_sms.text );<br />lcd_str(&quot;xyz&quot;);<br />//////////////////////////////////////////////[/syntax]<br />W linii zerowej otrzymuję dupABCxyz, bo text przesłany to ABC.<br />W linii pierwszej wyświetlacza mam dupxyz, z kolei wysłana wiadomość SMS-a trzy znaki, pierwszy 0, drugi B, trzeci C.<br />Jak widać po drodze nic nie zmienia zawartości out_sms.text, a linia 0 i 1 się różni.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8366">Nef.ID</a> — 15 cze 2020, o 20:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nef.ID]]></name></author>
<updated>2020-06-15T15:51:40+01:00</updated>
<published>2020-06-15T15:51:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23203&amp;p=227909#p227909</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23203&amp;p=227909#p227909"/>
<title type="html"><![CDATA[Re: Dwa kursory w Menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23203&amp;p=227909#p227909"><![CDATA[
Prawdopodobnie rozwiążę ten problem.<br /><br />Tym bardziej, że mam drugi udokumentowany przypadek, który gdybym podał na tym forum, to każdy postukałby się w głowę i pomyślał, że facet ma coś z głową.<br /><br />Ale są to zapewne przypadki serii takiej, że babol jest 2 km wcześniej, a wychodzi dopiero później.<br /><br />Dlatego, jeśli mi się uda, to kasuje ten wątek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8366">Nef.ID</a> — 15 cze 2020, o 15:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nef.ID]]></name></author>
<updated>2020-06-14T10:37:54+01:00</updated>
<published>2020-06-14T10:37:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23203&amp;p=227888#p227888</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23203&amp;p=227888#p227888"/>
<title type="html"><![CDATA[Dwa kursory w Menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23203&amp;p=227888#p227888"><![CDATA[
Witam, mam taki przypadek:<br /><br />Menu gen v.2.0 na OLED - 6 linii menu, First line pos 16, line height 8,<br />podmenu na 7 linii.<br /><br />Normalnie kursor zachowuje się normalnie i jest jeden.<br /><br />Jak tylko wybiorę w podmenu jakiś propertis, to <strong>po przewinięciu ekranu </strong>pojawiają się dwa, jeden z nich jest prawdziwy, tylko znajduje się nie tam, gdzie powinien.<br /><br />Zrobiłem na LED debugera:<br />[syntax=c]void on_display_item_cursor...) {<br />  mk_ssd1306_puts_P( 0, y, PSTR(&quot;&gt;&quot;), ...);<br />  <br />   //lcd_cls();<br /> lcd_locate(0,10); //tu wyświetlam pozycję kursora<br /> lcd_int(y);<br />}[/syntax]<br />Jak jeszcze nie wybrałem propertisa, to otrzymuję kręcąc enkoderem : 16,24,32,40,48,56 i 56 - kursor jest na końcu podlisty<br /><br />Po wybraniu jakiegoś propertisa np z pozycji 32 (trzecia linia) mam tak: 16,24,<strong>32</strong>,40,48,56 i po zmianie ekranu (bo kursor już jest na dole) 32 <br />Czyli nie 56, tylko 32.<br />Teraz mam kursor na pozycji 32 i 24.<br /><br />Z ciekawości sprawdzam jak to jest z tym kasowaniem kursora. Zrobiłem kolejnego debugera:<br />[syntax=c]void on_clear_item_cursor( ... {<br />  <br />    // example for OLED<br />     mk_ssd1306_puts_P( 0, get_y_pos(screen_cursor), PSTR(&quot; &quot;), M...);<br /><br />     lcd_locate(1,10); //pozycja kasowana<br />     lcd_int(get_y_pos(screen_cursor));<br />    <br />}[/syntax]<br />Normalnie wartość kasowana różni się o 8 od kursora: 16, 16, 24,32,40,48,56 i z powrotem:56,56,48,40,32,24 i 16.<br />Z tym wydaje się OK, bo po wybraniu propertisa idzie do 48, po przewinięcie ekranu idzie do 56, ale dalej na 40.<br />( kasowane miejsce podąża za kursorem, ponieważ kursor jest na złej pozycji, nie na 56 tylko 32, więc przekręcenie w prawo enkodera da w efekcie 40).<br /><br />Wyszedł niezły opis, zastanawiam się czy komuś będzie się chciało to czytać?<br />Może w wolnej chwili, jest piękna pogoda, więc lepiej nie wychodzić. Za ciepło  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> <br /><br />PS. Chciałem sprawdzić ten przypadek na Test data2 z Men gener, ale niestety wszystkie podmena są tam na jeden ekran.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 26 minutach ]</span></strong><br /><br />Mam jeszcze jedno b.długie podmenu, ale niestety bez propertisów. Tam jest jeden kursor i wszystko OK. Idzie do końca i jak przewijam ekran, to oba debugery pokazują 56, aż przelecę całą listę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8366">Nef.ID</a> — 14 cze 2020, o 10:37</p><hr />
]]></content>
</entry>
</feed>