Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
nextion_lcd.cpp@2:71b3736a1bd7, 2022-10-21 (annotated)
- Committer:
- js
- Date:
- Fri Oct 21 10:54:03 2022 +0000
- Revision:
- 2:71b3736a1bd7
test
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| js | 2:71b3736a1bd7 | 1 | |
| js | 2:71b3736a1bd7 | 2 | #include "mbed.h" |
| js | 2:71b3736a1bd7 | 3 | #include "main.h" |
| js | 2:71b3736a1bd7 | 4 | #include "nextion_lcd.h" |
| js | 2:71b3736a1bd7 | 5 | #include "APP.h" |
| js | 2:71b3736a1bd7 | 6 | #include "main.h" |
| js | 2:71b3736a1bd7 | 7 | static UnbufferedSerial *nx_lcd; |
| js | 2:71b3736a1bd7 | 8 | |
| js | 2:71b3736a1bd7 | 9 | char lcd_print_buf[64]; |
| js | 2:71b3736a1bd7 | 10 | Ticker LCD_RX_TIME_OUT; |
| js | 2:71b3736a1bd7 | 11 | unsigned char page=0;//lcd画面ページ |
| js | 2:71b3736a1bd7 | 12 | unsigned char page_bak=0;//lcd画面ページ(一個前のページ) |
| js | 2:71b3736a1bd7 | 13 | unsigned char PAUSE_F=0;//一時停止; |
| js | 2:71b3736a1bd7 | 14 | unsigned char lcd_rx_buf_cnt=0; |
| js | 2:71b3736a1bd7 | 15 | char lcd_rx_buf[64]; |
| js | 2:71b3736a1bd7 | 16 | int nx_lineIndex; |
| js | 2:71b3736a1bd7 | 17 | char lot_edit_set[32]; |
| js | 2:71b3736a1bd7 | 18 | unsigned char LOT_EDIT_F=0; |
| js | 2:71b3736a1bd7 | 19 | |
| js | 2:71b3736a1bd7 | 20 | |
| js | 2:71b3736a1bd7 | 21 | extern char lcd_print_buf[64]; |
| js | 2:71b3736a1bd7 | 22 | extern unsigned char a_read_ng;//audio file read ng |
| js | 2:71b3736a1bd7 | 23 | |
| js | 2:71b3736a1bd7 | 24 | extern unsigned char tp_mask;//1=タッチパネルマスク |
| js | 2:71b3736a1bd7 | 25 | |
| js | 2:71b3736a1bd7 | 26 | void nx_lcd_rx (); |
| js | 2:71b3736a1bd7 | 27 | void nx_sw_chk(void); |
| js | 2:71b3736a1bd7 | 28 | unsigned char touch_id=0; |
| js | 2:71b3736a1bd7 | 29 | unsigned char vc_ds_sw=0;//DUAL STATE SWの論理確認用 |
| js | 2:71b3736a1bd7 | 30 | unsigned char val_get=0;//ボリューム取得完了フラグ(1で完了) |
| js | 2:71b3736a1bd7 | 31 | unsigned char val_st=0;//ボリューム状態 |
| js | 2:71b3736a1bd7 | 32 | unsigned char page_get=0;//ページ取得済み1 |
| js | 2:71b3736a1bd7 | 33 | unsigned char page_st=0xFF;//ページNo |
| js | 2:71b3736a1bd7 | 34 | |
| js | 2:71b3736a1bd7 | 35 | unsigned char touch_p=0xFF;//ボタンタッチ時のページ識別ID |
| js | 2:71b3736a1bd7 | 36 | unsigned char touch_t=0xFF;//ボタンのトグル状態 1=on 0=off(タッチパネル設定でボタンを離した時にもデータ送信設定した場合の識別) |
| js | 2:71b3736a1bd7 | 37 | |
| js | 2:71b3736a1bd7 | 38 | unsigned char lcd_page=0;//lcdからページを取得した場合、ページNoが入る |
| js | 2:71b3736a1bd7 | 39 | |
| js | 2:71b3736a1bd7 | 40 | |
| js | 2:71b3736a1bd7 | 41 | char temdat[3]; |
| js | 2:71b3736a1bd7 | 42 | char dcdat[3]; |
| js | 2:71b3736a1bd7 | 43 | ///ロット編集結果の取り込み//(SD保存する場合は、config.cppのLOT_DAT_WR()を実行 |
| js | 2:71b3736a1bd7 | 44 | void lot_edit_chk(void){ |
| js | 2:71b3736a1bd7 | 45 | for(unsigned char cp=0; cp<lcd_rx_buf_cnt ; cp++){ |
| js | 2:71b3736a1bd7 | 46 | lot_edit_set[cp]=lcd_rx_buf[cp]; |
| js | 2:71b3736a1bd7 | 47 | } |
| js | 2:71b3736a1bd7 | 48 | lot_edit_set[lcd_rx_buf_cnt-1]=NULL;//で終端 |
| js | 2:71b3736a1bd7 | 49 | buf_clr(); |
| js | 2:71b3736a1bd7 | 50 | LOT_EDIT_F=1;//1=ロット編集あり |
| js | 2:71b3736a1bd7 | 51 | |
| js | 2:71b3736a1bd7 | 52 | } |
| js | 2:71b3736a1bd7 | 53 | void nx_printf(char *txt){ |
| js | 2:71b3736a1bd7 | 54 | char tx_buf[64]; |
| js | 2:71b3736a1bd7 | 55 | unsigned char len = strlen(txt);//文字列の長さを確認 |
| js | 2:71b3736a1bd7 | 56 | nx_lcd->write(txt,len); |
| js | 2:71b3736a1bd7 | 57 | } |
| js | 2:71b3736a1bd7 | 58 | |
| js | 2:71b3736a1bd7 | 59 | ///受信タイムアウト処理///// |
| js | 2:71b3736a1bd7 | 60 | void LCD_RX_TIMEOUT_IRQ(void){ |
| js | 2:71b3736a1bd7 | 61 | LCD_RX_TIME_OUT.detach();//シリアル受信タイムアウトカウンタ停止 |
| js | 2:71b3736a1bd7 | 62 | buf_clr(); |
| js | 2:71b3736a1bd7 | 63 | } |
| js | 2:71b3736a1bd7 | 64 | void buf_clr(void){ |
| js | 2:71b3736a1bd7 | 65 | char rxdat[8]; |
| js | 2:71b3736a1bd7 | 66 | //読み捨て処理 |
| js | 2:71b3736a1bd7 | 67 | while(nx_lcd->readable()==1){ |
| js | 2:71b3736a1bd7 | 68 | nx_lcd->read(rxdat,1); |
| js | 2:71b3736a1bd7 | 69 | } |
| js | 2:71b3736a1bd7 | 70 | |
| js | 2:71b3736a1bd7 | 71 | for(unsigned char clrcnt=0; clrcnt<sizeof(lcd_rx_buf); clrcnt++){ |
| js | 2:71b3736a1bd7 | 72 | lcd_rx_buf[clrcnt]=0x00; |
| js | 2:71b3736a1bd7 | 73 | |
| js | 2:71b3736a1bd7 | 74 | } |
| js | 2:71b3736a1bd7 | 75 | lcd_rx_buf_cnt=0; |
| js | 2:71b3736a1bd7 | 76 | nx_lineIndex=0; |
| js | 2:71b3736a1bd7 | 77 | |
| js | 2:71b3736a1bd7 | 78 | } |
| js | 2:71b3736a1bd7 | 79 | |
| js | 2:71b3736a1bd7 | 80 | unsigned char nx_val_get(char *obj){ |
| js | 2:71b3736a1bd7 | 81 | char buf[64]; |
| js | 2:71b3736a1bd7 | 82 | unsigned char time_out=0; |
| js | 2:71b3736a1bd7 | 83 | unsigned char tp_mask_bak=tp_mask; |
| js | 2:71b3736a1bd7 | 84 | if(tp_mask_bak==1){ |
| js | 2:71b3736a1bd7 | 85 | tp_mask=0;//1=タッチパネルマスク解除 |
| js | 2:71b3736a1bd7 | 86 | } |
| js | 2:71b3736a1bd7 | 87 | val_get=0; |
| js | 2:71b3736a1bd7 | 88 | val_st=0xFF; |
| js | 2:71b3736a1bd7 | 89 | sprintf(buf,"get %s.val",obj); |
| js | 2:71b3736a1bd7 | 90 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 91 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 92 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 93 | while(val_get==0 && time_out<200){//受信割り込みタイムアウトを100msにしているのでそれ以上は待つこと |
| js | 2:71b3736a1bd7 | 94 | time_out++; |
| js | 2:71b3736a1bd7 | 95 | wait_ms(10); |
| js | 2:71b3736a1bd7 | 96 | } |
| js | 2:71b3736a1bd7 | 97 | if(tp_mask_bak==1){ |
| js | 2:71b3736a1bd7 | 98 | tp_mask=1;//1=タッチパネルマスク |
| js | 2:71b3736a1bd7 | 99 | } |
| js | 2:71b3736a1bd7 | 100 | if(time_out>=200){ |
| js | 2:71b3736a1bd7 | 101 | tp_mask=1;//1=タッチパネルマスク |
| js | 2:71b3736a1bd7 | 102 | return 0xFF; |
| js | 2:71b3736a1bd7 | 103 | }else{ |
| js | 2:71b3736a1bd7 | 104 | tp_mask=1;//1=タッチパネルマスク |
| js | 2:71b3736a1bd7 | 105 | return val_st; |
| js | 2:71b3736a1bd7 | 106 | } |
| js | 2:71b3736a1bd7 | 107 | } |
| js | 2:71b3736a1bd7 | 108 | |
| js | 2:71b3736a1bd7 | 109 | void nx_val_set(char *obj,char cont){ |
| js | 2:71b3736a1bd7 | 110 | char buf[64]; |
| js | 2:71b3736a1bd7 | 111 | unsigned char time_out=0; |
| js | 2:71b3736a1bd7 | 112 | val_get=0; |
| js | 2:71b3736a1bd7 | 113 | sprintf(buf,"%s.val=%d",obj,cont); |
| js | 2:71b3736a1bd7 | 114 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 115 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 116 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 117 | } |
| js | 2:71b3736a1bd7 | 118 | |
| js | 2:71b3736a1bd7 | 119 | unsigned char nx_val_get_cbox(char no){ |
| js | 2:71b3736a1bd7 | 120 | char buf[64]; |
| js | 2:71b3736a1bd7 | 121 | unsigned long time_out=0; |
| js | 2:71b3736a1bd7 | 122 | unsigned char tp_mask_bak=tp_mask; |
| js | 2:71b3736a1bd7 | 123 | if(tp_mask_bak==1){ |
| js | 2:71b3736a1bd7 | 124 | tp_mask=0;//1=タッチパネルマスク解除 |
| js | 2:71b3736a1bd7 | 125 | } |
| js | 2:71b3736a1bd7 | 126 | val_get=0; |
| js | 2:71b3736a1bd7 | 127 | sprintf(buf,"get c%d.val",no); |
| js | 2:71b3736a1bd7 | 128 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 129 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 130 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 131 | while(val_get==0 && time_out<200){//受信割り込みタイムアウトを100msにしているのでそれ以上は待つこと |
| js | 2:71b3736a1bd7 | 132 | time_out++; |
| js | 2:71b3736a1bd7 | 133 | wait_ms(10); |
| js | 2:71b3736a1bd7 | 134 | } |
| js | 2:71b3736a1bd7 | 135 | if(tp_mask_bak==1){ |
| js | 2:71b3736a1bd7 | 136 | tp_mask=1;//1=タッチパネルマスク |
| js | 2:71b3736a1bd7 | 137 | } |
| js | 2:71b3736a1bd7 | 138 | if(time_out>=200){ |
| js | 2:71b3736a1bd7 | 139 | return 0xFF; |
| js | 2:71b3736a1bd7 | 140 | }else{ |
| js | 2:71b3736a1bd7 | 141 | return val_st; |
| js | 2:71b3736a1bd7 | 142 | } |
| js | 2:71b3736a1bd7 | 143 | } |
| js | 2:71b3736a1bd7 | 144 | unsigned char nx_get(char *obj){ |
| js | 2:71b3736a1bd7 | 145 | char buf[64]; |
| js | 2:71b3736a1bd7 | 146 | |
| js | 2:71b3736a1bd7 | 147 | unsigned char time_out=0; |
| js | 2:71b3736a1bd7 | 148 | unsigned char tp_mask_bak=tp_mask; |
| js | 2:71b3736a1bd7 | 149 | if(tp_mask_bak==1){ |
| js | 2:71b3736a1bd7 | 150 | tp_mask=0;//1=タッチパネルマスク解除 |
| js | 2:71b3736a1bd7 | 151 | } |
| js | 2:71b3736a1bd7 | 152 | val_get=0; |
| js | 2:71b3736a1bd7 | 153 | val_st=0xFF; |
| js | 2:71b3736a1bd7 | 154 | buf_clr(); |
| js | 2:71b3736a1bd7 | 155 | sprintf(buf,"get %s",obj); |
| js | 2:71b3736a1bd7 | 156 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 157 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 158 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 159 | while(val_get==0 && time_out<200){//受信割り込みタイムアウトを100msにしているのでそれ以上は待つこと |
| js | 2:71b3736a1bd7 | 160 | time_out++; |
| js | 2:71b3736a1bd7 | 161 | wait_ms(1); |
| js | 2:71b3736a1bd7 | 162 | } |
| js | 2:71b3736a1bd7 | 163 | if(tp_mask_bak==1){ |
| js | 2:71b3736a1bd7 | 164 | tp_mask=1;//1=タッチパネルマスク |
| js | 2:71b3736a1bd7 | 165 | } |
| js | 2:71b3736a1bd7 | 166 | if(time_out>=200){ |
| js | 2:71b3736a1bd7 | 167 | sprintf(lcd_print_buf,"RTC受信不良 cnt=%d",lcd_rx_buf_cnt); |
| js | 2:71b3736a1bd7 | 168 | lcd_print("t0",lcd_print_buf); |
| js | 2:71b3736a1bd7 | 169 | for(;;); |
| js | 2:71b3736a1bd7 | 170 | return 0; |
| js | 2:71b3736a1bd7 | 171 | }else{ |
| js | 2:71b3736a1bd7 | 172 | return val_st; |
| js | 2:71b3736a1bd7 | 173 | } |
| js | 2:71b3736a1bd7 | 174 | } |
| js | 2:71b3736a1bd7 | 175 | unsigned char nx_page_get(){ |
| js | 2:71b3736a1bd7 | 176 | char buf[64]; |
| js | 2:71b3736a1bd7 | 177 | unsigned char time_out=0; |
| js | 2:71b3736a1bd7 | 178 | unsigned char tp_mask_bak=tp_mask; |
| js | 2:71b3736a1bd7 | 179 | if(tp_mask_bak==1){ |
| js | 2:71b3736a1bd7 | 180 | tp_mask=0;//1=タッチパネルマスク解除 |
| js | 2:71b3736a1bd7 | 181 | } |
| js | 2:71b3736a1bd7 | 182 | page_get=0; |
| js | 2:71b3736a1bd7 | 183 | page_st=0xFF; |
| js | 2:71b3736a1bd7 | 184 | buf_clr(); |
| js | 2:71b3736a1bd7 | 185 | nx_printf("sendme"); |
| js | 2:71b3736a1bd7 | 186 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 187 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 188 | |
| js | 2:71b3736a1bd7 | 189 | while(page_get==0 && time_out<200){//受信割り込みタイムアウトを100msにしているのでそれ以上は待つこと |
| js | 2:71b3736a1bd7 | 190 | time_out++; |
| js | 2:71b3736a1bd7 | 191 | wait_ms(10); |
| js | 2:71b3736a1bd7 | 192 | } |
| js | 2:71b3736a1bd7 | 193 | if(tp_mask_bak==1){ |
| js | 2:71b3736a1bd7 | 194 | tp_mask=1;//1=タッチパネルマスク解除 |
| js | 2:71b3736a1bd7 | 195 | } |
| js | 2:71b3736a1bd7 | 196 | if(time_out>=200){ |
| js | 2:71b3736a1bd7 | 197 | printf("page get ng\r\n"); |
| js | 2:71b3736a1bd7 | 198 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 199 | return 0xFF; |
| js | 2:71b3736a1bd7 | 200 | }else{ |
| js | 2:71b3736a1bd7 | 201 | //printf("page=%d\r\n",page_st); |
| js | 2:71b3736a1bd7 | 202 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 203 | return page_st; |
| js | 2:71b3736a1bd7 | 204 | } |
| js | 2:71b3736a1bd7 | 205 | } |
| js | 2:71b3736a1bd7 | 206 | |
| js | 2:71b3736a1bd7 | 207 | //LCD I/Fデータ受信割り込み////// |
| js | 2:71b3736a1bd7 | 208 | void nx_lcd_rx () { |
| js | 2:71b3736a1bd7 | 209 | unsigned char rxsize=nx_lcd->size(); |
| js | 2:71b3736a1bd7 | 210 | char rxdat[8]; |
| js | 2:71b3736a1bd7 | 211 | nx_lcd->read(rxdat,1); |
| js | 2:71b3736a1bd7 | 212 | lcd_rx_buf[lcd_rx_buf_cnt]=rxdat[0];//マスク中は読み捨て |
| js | 2:71b3736a1bd7 | 213 | // sprintf(lcd_print_buf,"rxsize=%d\r\n",rxsize); |
| js | 2:71b3736a1bd7 | 214 | //pc_printf(lcd_print_buf); |
| js | 2:71b3736a1bd7 | 215 | if(tp_mask==0){//1=タッチパネルマスク |
| js | 2:71b3736a1bd7 | 216 | lcd_rx_buf_cnt++; |
| js | 2:71b3736a1bd7 | 217 | ///タイムアウトセット最初のデータ受信から一定時間終端コードがこない場合は、タイムアウト処理する |
| js | 2:71b3736a1bd7 | 218 | //下記を記載するとos err |
| js | 2:71b3736a1bd7 | 219 | if(lcd_rx_buf_cnt==1){//1バイト目を受信したらタイムアウトカウンタを起動する。 |
| js | 2:71b3736a1bd7 | 220 | LCD_RX_TIME_OUT.attach(&LCD_RX_TIMEOUT_IRQ,0.2); ////0.1 |
| js | 2:71b3736a1bd7 | 221 | } |
| js | 2:71b3736a1bd7 | 222 | //バッファオーバーフロー処理//// |
| js | 2:71b3736a1bd7 | 223 | if(lcd_rx_buf_cnt>sizeof(lcd_rx_buf)){ |
| js | 2:71b3736a1bd7 | 224 | buf_clr(); |
| js | 2:71b3736a1bd7 | 225 | } |
| js | 2:71b3736a1bd7 | 226 | ////終端コード受信時の処理/// |
| js | 2:71b3736a1bd7 | 227 | if(lcd_rx_buf[lcd_rx_buf_cnt-3]==0xFF && lcd_rx_buf[lcd_rx_buf_cnt-2]==0xFF && lcd_rx_buf[lcd_rx_buf_cnt-1]==0xFF){ |
| js | 2:71b3736a1bd7 | 228 | switch (lcd_rx_buf[0]) { |
| js | 2:71b3736a1bd7 | 229 | ////caseはnextion lcdのSWに割り当てられたidを記載する/// |
| js | 2:71b3736a1bd7 | 230 | case 0x65 : ///通常のボタン押下// |
| js | 2:71b3736a1bd7 | 231 | touch_p=lcd_rx_buf[1]; //ボタンタッチ時のページ識別ID |
| js | 2:71b3736a1bd7 | 232 | touch_id=lcd_rx_buf[2]; //タッチボタンのIDを取得 |
| js | 2:71b3736a1bd7 | 233 | touch_t=lcd_rx_buf[3]; //タッチ時か、リリース時かを識別 |
| js | 2:71b3736a1bd7 | 234 | // printf("touch_id=%x\r\n",touch_id); |
| js | 2:71b3736a1bd7 | 235 | if(page==P_MAIN && touch_id==BT1_PAUSE){//一時停止がおされた場合 |
| js | 2:71b3736a1bd7 | 236 | PAUSE_F=1;//一時停止 |
| js | 2:71b3736a1bd7 | 237 | } |
| js | 2:71b3736a1bd7 | 238 | if(touch_p !=page){ |
| js | 2:71b3736a1bd7 | 239 | printf("TOUCH PAGE NG!!\r\n"); |
| js | 2:71b3736a1bd7 | 240 | lcd_print("t0","タッチパネル通信異常が発生しました。"); |
| js | 2:71b3736a1bd7 | 241 | ALM_HOLD_SET(); |
| js | 2:71b3736a1bd7 | 242 | } |
| js | 2:71b3736a1bd7 | 243 | break; |
| js | 2:71b3736a1bd7 | 244 | case 0x66 : //page取得/// |
| js | 2:71b3736a1bd7 | 245 | page_get=1; |
| js | 2:71b3736a1bd7 | 246 | page_st=lcd_rx_buf[1]; |
| js | 2:71b3736a1bd7 | 247 | break; |
| js | 2:71b3736a1bd7 | 248 | case 0x71 : //val取得//// |
| js | 2:71b3736a1bd7 | 249 | val_st=lcd_rx_buf[1]; |
| js | 2:71b3736a1bd7 | 250 | val_get=1; |
| js | 2:71b3736a1bd7 | 251 | break; |
| js | 2:71b3736a1bd7 | 252 | |
| js | 2:71b3736a1bd7 | 253 | |
| js | 2:71b3736a1bd7 | 254 | } |
| js | 2:71b3736a1bd7 | 255 | buf_clr(); |
| js | 2:71b3736a1bd7 | 256 | } |
| js | 2:71b3736a1bd7 | 257 | if(lcd_rx_buf[lcd_rx_buf_cnt-1]==0x21 &&lcd_rx_buf[lcd_rx_buf_cnt-2]==0x21 && lcd_rx_buf_cnt>=1){ |
| js | 2:71b3736a1bd7 | 258 | lot_edit_chk(); |
| js | 2:71b3736a1bd7 | 259 | } |
| js | 2:71b3736a1bd7 | 260 | } |
| js | 2:71b3736a1bd7 | 261 | } |
| js | 2:71b3736a1bd7 | 262 | |
| js | 2:71b3736a1bd7 | 263 | |
| js | 2:71b3736a1bd7 | 264 | void nextion_lcd_ini(void){ |
| js | 2:71b3736a1bd7 | 265 | temdat[0]=0xFF; |
| js | 2:71b3736a1bd7 | 266 | temdat[1]=0xFF; |
| js | 2:71b3736a1bd7 | 267 | temdat[2]=0xFF; |
| js | 2:71b3736a1bd7 | 268 | |
| js | 2:71b3736a1bd7 | 269 | dcdat[0]=0x22; |
| js | 2:71b3736a1bd7 | 270 | |
| js | 2:71b3736a1bd7 | 271 | nx_lcd= new UnbufferedSerial(PA_9,PA_10,115200);//J4 |
| js | 2:71b3736a1bd7 | 272 | //nx_lcd= new UnbufferedSerial(USBTX, USBRX,9600); |
| js | 2:71b3736a1bd7 | 273 | wait_ms(100); |
| js | 2:71b3736a1bd7 | 274 | nx_printf("rest"); |
| js | 2:71b3736a1bd7 | 275 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 276 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 277 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 278 | //wait_ms(1000); |
| js | 2:71b3736a1bd7 | 279 | //os5では、バッファにデータが残っているとattach時にハング(受信割り込みで復帰)するのでクリア時に読み捨てをいれて対処 |
| js | 2:71b3736a1bd7 | 280 | buf_clr(); |
| js | 2:71b3736a1bd7 | 281 | //シリアル通信の割り込み処理 |
| js | 2:71b3736a1bd7 | 282 | nx_lcd->attach(nx_lcd_rx, SerialBase::RxIrq); |
| js | 2:71b3736a1bd7 | 283 | |
| js | 2:71b3736a1bd7 | 284 | |
| js | 2:71b3736a1bd7 | 285 | |
| js | 2:71b3736a1bd7 | 286 | } |
| js | 2:71b3736a1bd7 | 287 | void lcd_text_color_chg(char *obj,unsigned long color,char wait_set){//(例:lcd_text_color_chg("b0",63488,50);ボタン0のテキストが赤に変わる(緑は2016) |
| js | 2:71b3736a1bd7 | 288 | char buf[32]; |
| js | 2:71b3736a1bd7 | 289 | sprintf(buf,"%s.pco=%d",obj,color); |
| js | 2:71b3736a1bd7 | 290 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 291 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 292 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 293 | wait_ms(wait_set); |
| js | 2:71b3736a1bd7 | 294 | |
| js | 2:71b3736a1bd7 | 295 | } |
| js | 2:71b3736a1bd7 | 296 | void lcd_bc_color_chg(char *obj,unsigned long color,char wait_set){//(例:lcd_bc_color_chg("b0",63488,50);ボタン0の背景色が赤に変わる(緑は2016) |
| js | 2:71b3736a1bd7 | 297 | char buf[32]; |
| js | 2:71b3736a1bd7 | 298 | sprintf(buf,"%s.bco=%d",obj,color); |
| js | 2:71b3736a1bd7 | 299 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 300 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 301 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 302 | wait_ms(wait_set); |
| js | 2:71b3736a1bd7 | 303 | |
| js | 2:71b3736a1bd7 | 304 | } |
| js | 2:71b3736a1bd7 | 305 | |
| js | 2:71b3736a1bd7 | 306 | void lcd_print(char *obj,char *txt){ |
| js | 2:71b3736a1bd7 | 307 | float wait_set=0;///2021/05/18 お試し 旧 unsigned char |
| js | 2:71b3736a1bd7 | 308 | char temdat2[1]; |
| js | 2:71b3736a1bd7 | 309 | temdat2[0]=0x22; |
| js | 2:71b3736a1bd7 | 310 | char buf[32]; |
| js | 2:71b3736a1bd7 | 311 | unsigned char len = strlen(txt);//文字列の長さを確認 |
| js | 2:71b3736a1bd7 | 312 | //wait_set=len*2;//9600bpsの場合1文字送信時間は1ms程度なので、マージンを取って2倍する。] |
| js | 2:71b3736a1bd7 | 313 | wait_set=(len*2)/10;/////2021/05/18 お試し 旧 wait_set=len |
| js | 2:71b3736a1bd7 | 314 | |
| js | 2:71b3736a1bd7 | 315 | sprintf(buf,"%s.txt=",obj); |
| js | 2:71b3736a1bd7 | 316 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 317 | nx_lcd->write(dcdat,1); |
| js | 2:71b3736a1bd7 | 318 | nx_printf(txt); |
| js | 2:71b3736a1bd7 | 319 | nx_lcd->write(dcdat,1); |
| js | 2:71b3736a1bd7 | 320 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 321 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 322 | wait_ms(wait_set); |
| js | 2:71b3736a1bd7 | 323 | //printf("len=%d wait=%d\r\n",len,wait_set); |
| js | 2:71b3736a1bd7 | 324 | } |
| js | 2:71b3736a1bd7 | 325 | void lcd_print_cb(char *obj,char *txt){ |
| js | 2:71b3736a1bd7 | 326 | float wait_set=0;///2021/05/18 お試し 旧 unsigned char |
| js | 2:71b3736a1bd7 | 327 | char temdat2[1]; |
| js | 2:71b3736a1bd7 | 328 | temdat2[0]=0x22; |
| js | 2:71b3736a1bd7 | 329 | char buf[256]; |
| js | 2:71b3736a1bd7 | 330 | unsigned char len = strlen(txt);//文字列の長さを確認 |
| js | 2:71b3736a1bd7 | 331 | //wait_set=len*2;//9600bpsの場合1文字送信時間は1ms程度なので、マージンを取って2倍する。] |
| js | 2:71b3736a1bd7 | 332 | wait_set=(len*2)/10;/////2021/05/18 お試し 旧 wait_set=len |
| js | 2:71b3736a1bd7 | 333 | |
| js | 2:71b3736a1bd7 | 334 | sprintf(buf,"%s.path+=",obj); |
| js | 2:71b3736a1bd7 | 335 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 336 | nx_lcd->write(dcdat,1); |
| js | 2:71b3736a1bd7 | 337 | nx_printf(txt); |
| js | 2:71b3736a1bd7 | 338 | nx_lcd->write(dcdat,1); |
| js | 2:71b3736a1bd7 | 339 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 340 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 341 | wait_ms(wait_set); |
| js | 2:71b3736a1bd7 | 342 | //printf("len=%d wait=%d\r\n",len,wait_set); |
| js | 2:71b3736a1bd7 | 343 | } |
| js | 2:71b3736a1bd7 | 344 | void lcd_page_set_olg(unsigned char page_set,unsigned char wait_set){//(例:lcd_page_set(1,50);//ページ1に切り替わる wait 50ms |
| js | 2:71b3736a1bd7 | 345 | |
| js | 2:71b3736a1bd7 | 346 | char buf[32]; |
| js | 2:71b3736a1bd7 | 347 | sprintf(buf,"page %d",page_set); |
| js | 2:71b3736a1bd7 | 348 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 349 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 350 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 351 | wait_ms(wait_set); |
| js | 2:71b3736a1bd7 | 352 | |
| js | 2:71b3736a1bd7 | 353 | } |
| js | 2:71b3736a1bd7 | 354 | |
| js | 2:71b3736a1bd7 | 355 | void lcd_page_set(unsigned char page_set,unsigned char wait_set){//(例:lcd_page_set(1,50);//ページ1に切り替わる wait 50ms |
| js | 2:71b3736a1bd7 | 356 | unsigned char page_set_rt=0; |
| js | 2:71b3736a1bd7 | 357 | tp_mask=0;//1=タッチパネルマスク page変更時は、強制解除 |
| js | 2:71b3736a1bd7 | 358 | buf_clr(); |
| js | 2:71b3736a1bd7 | 359 | while(page_set_rt<2){ |
| js | 2:71b3736a1bd7 | 360 | lcd_page_set_olg(page_set,wait_set); |
| js | 2:71b3736a1bd7 | 361 | buf_clr(); |
| js | 2:71b3736a1bd7 | 362 | if(nx_page_get()==page_set){ |
| js | 2:71b3736a1bd7 | 363 | page=page_set; |
| js | 2:71b3736a1bd7 | 364 | break; |
| js | 2:71b3736a1bd7 | 365 | } |
| js | 2:71b3736a1bd7 | 366 | page_set_rt++; |
| js | 2:71b3736a1bd7 | 367 | } |
| js | 2:71b3736a1bd7 | 368 | if(page_set_rt>=2){ |
| js | 2:71b3736a1bd7 | 369 | printf("PAGE SET NG\r\n"); |
| js | 2:71b3736a1bd7 | 370 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 371 | lcd_print("t0","タッチパネル通信異常が発生しました。"); |
| js | 2:71b3736a1bd7 | 372 | ALM_HOLD_SET(); |
| js | 2:71b3736a1bd7 | 373 | }else{ |
| js | 2:71b3736a1bd7 | 374 | //printf("PAGE SET OK\r\n"); |
| js | 2:71b3736a1bd7 | 375 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 376 | } |
| js | 2:71b3736a1bd7 | 377 | |
| js | 2:71b3736a1bd7 | 378 | } |
| js | 2:71b3736a1bd7 | 379 | void lcd_progressbar(char *obj,unsigned char val,unsigned char wait_set){//(例:lcd_progressbar("j0",50,50);//プログレスバー表示が50になる wait 50ms |
| js | 2:71b3736a1bd7 | 380 | char buf[32]; |
| js | 2:71b3736a1bd7 | 381 | sprintf(buf,"%s.val=%d",obj,val); |
| js | 2:71b3736a1bd7 | 382 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 383 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 384 | wait_ms(wait_set); |
| js | 2:71b3736a1bd7 | 385 | } |
| js | 2:71b3736a1bd7 | 386 | |
| js | 2:71b3736a1bd7 | 387 | void lcd_pic_chg(char *obj,unsigned char val,unsigned char wait_set){//(例:lcd_pic_chg("p0",3,50);//p0の画像指定が3に代わる(画像切り替えができる)wait 50ms |
| js | 2:71b3736a1bd7 | 388 | char buf[64]; |
| js | 2:71b3736a1bd7 | 389 | sprintf(buf,"%s.pic=%d",obj,val); |
| js | 2:71b3736a1bd7 | 390 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 391 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 392 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 393 | wait_ms(wait_set); |
| js | 2:71b3736a1bd7 | 394 | } |
| js | 2:71b3736a1bd7 | 395 | void nx_dsbt_st_set(char *obj,unsigned char val,unsigned char wait_set){//例:nx_dsbt_st_set("bt0",0,50);dualステートボタンを強制OFF(50ms wait) |
| js | 2:71b3736a1bd7 | 396 | char buf[64]; |
| js | 2:71b3736a1bd7 | 397 | sprintf(buf,"%s.val=%d",obj,val); |
| js | 2:71b3736a1bd7 | 398 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 399 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 400 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 401 | wait_ms(wait_set); |
| js | 2:71b3736a1bd7 | 402 | } |
| js | 2:71b3736a1bd7 | 403 | void lcd_page_chk(){//(例:lcd_page_chk(); lcdのページ番号を要求 |
| js | 2:71b3736a1bd7 | 404 | unsigned char timeout=0; |
| js | 2:71b3736a1bd7 | 405 | lcd_page=0;//lcdからページを取得した場合、ページNoが入る |
| js | 2:71b3736a1bd7 | 406 | |
| js | 2:71b3736a1bd7 | 407 | nx_printf("sendme"); |
| js | 2:71b3736a1bd7 | 408 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 409 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 410 | //////lcd_pageに値が受信割り込みで入るまでwait//// |
| js | 2:71b3736a1bd7 | 411 | while(lcd_page==0 && timeout<30){ |
| js | 2:71b3736a1bd7 | 412 | timeout++; |
| js | 2:71b3736a1bd7 | 413 | wait_ms(10); |
| js | 2:71b3736a1bd7 | 414 | } |
| js | 2:71b3736a1bd7 | 415 | } |
| js | 2:71b3736a1bd7 | 416 | void lcd_bt_en(char *obj,unsigned char val,unsigned char wait_set){//(例:lcd_bten(b0,0,50); b0が無効 lcd_bt_en(b0,1,50); b0がゆうこう有効 |
| js | 2:71b3736a1bd7 | 417 | char buf[64]; |
| js | 2:71b3736a1bd7 | 418 | sprintf(buf,"tsw %s,%d",obj,val); |
| js | 2:71b3736a1bd7 | 419 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 420 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 421 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 422 | wait_ms(wait_set); |
| js | 2:71b3736a1bd7 | 423 | } |
| js | 2:71b3736a1bd7 | 424 | void lcd_audio_play(unsigned char id,unsigned char loop,unsigned char wait_set){//(例:lcd_audio_play(0,0,50);//0番のaudioをループ無し再生、コマンドwait 50ms |
| js | 2:71b3736a1bd7 | 425 | char buf[64]; |
| js | 2:71b3736a1bd7 | 426 | sprintf(buf,"play 0,%d,%d",id,loop);//ch,id,loop |
| js | 2:71b3736a1bd7 | 427 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 428 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 429 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 430 | wait_ms(wait_set); |
| js | 2:71b3736a1bd7 | 431 | } |
| js | 2:71b3736a1bd7 | 432 | |
| js | 2:71b3736a1bd7 | 433 | void lcd_audio_cont(unsigned char val,unsigned char wait_set){//val=0 再生停止 1 resume 2 puse |
| js | 2:71b3736a1bd7 | 434 | char buf[64]; |
| js | 2:71b3736a1bd7 | 435 | sprintf(buf,"audio0=%d",val); |
| js | 2:71b3736a1bd7 | 436 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 437 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 438 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 439 | wait_ms(wait_set); |
| js | 2:71b3736a1bd7 | 440 | } |
| js | 2:71b3736a1bd7 | 441 | void lcd_audio_vol(unsigned char val,unsigned char wait_set){//val=0から100 |
| js | 2:71b3736a1bd7 | 442 | char buf[64]; |
| js | 2:71b3736a1bd7 | 443 | sprintf(buf,"volume=%d",val); |
| js | 2:71b3736a1bd7 | 444 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 445 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 446 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 447 | wait_ms(wait_set); |
| js | 2:71b3736a1bd7 | 448 | } |
| js | 2:71b3736a1bd7 | 449 | |
| js | 2:71b3736a1bd7 | 450 | void lcd_backlight(unsigned char val){//例 lcd_backlight(50); //明るさがセンターになる。 |
| js | 2:71b3736a1bd7 | 451 | char buf[32]; |
| js | 2:71b3736a1bd7 | 452 | sprintf(buf,"dim=%d",val); |
| js | 2:71b3736a1bd7 | 453 | nx_printf(buf); |
| js | 2:71b3736a1bd7 | 454 | nx_lcd->write(temdat,3); |
| js | 2:71b3736a1bd7 | 455 | fflush(stdout); |
| js | 2:71b3736a1bd7 | 456 | |
| js | 2:71b3736a1bd7 | 457 | } |