DiplayApp library

Dependents:   mbed-os_Watson-IoT_ZXing_sample mbed-os_Watson-IoT_ZXing_sample GR-Boads_Camera_DisplayApp GR-Boads_Camera_DisplayApp ... more

For Windows PC

For Mac

Serial setting

You need to connect your PC and MicroUSB Connector(RZ/A1 Ch.0).

/media/uploads/dkato/usb0_and_button.jpg

Troubleshooting!

If your PC isn't Windows10, you need to install the specified driver from the below URL.
https://os.mbed.com/handbook/USBSerial

Unfortunately, since that is "Unsigned driver", you cannot install as is depending on your Windows version. Since the setting method is different for each PC, please search with "Unsigned driver" keyword on the search site.

トラブルシューティング!

Windows10以外ご使用の場合、ドライバのインストールが必要となります。下記サイトのからドライバーをダウンロードできます。
https://os.mbed.com/handbook/USBSerial

但し、「署名なしドライバ」となっていますので、お使いのWindowsバージョンによってはそのままインストールすることはできません。お使いのPC毎に設定方法が異なるため、検索サイトで「署名なしドライバ」で検索してください。

Committer:
dkato
Date:
Thu May 18 06:50:51 2017 +0000
Revision:
3:693902c86ca0
Parent:
2:b7ffe5216cd7
Child:
4:3c46efbe6d21
Fix compiler warning.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 0:13c1f522bbef 1
dkato 0:13c1f522bbef 2 #include "mbed.h"
dkato 0:13c1f522bbef 3 #include "DisplayApp.h"
dkato 0:13c1f522bbef 4
dkato 0:13c1f522bbef 5 void DisplayApp::display_app_process() {
dkato 0:13c1f522bbef 6 int data;
dkato 0:13c1f522bbef 7 int pos_x_wk;
dkato 0:13c1f522bbef 8 int pos_wk;
dkato 0:13c1f522bbef 9
dkato 0:13c1f522bbef 10 pPcApp = new USBSerial;
dkato 0:13c1f522bbef 11
dkato 2:b7ffe5216cd7 12 displayThread.set_priority(change_pri);
dkato 0:13c1f522bbef 13 while (1) {
dkato 1:fdcf2c6a1167 14 if (pPcApp->readable()) {
dkato 1:fdcf2c6a1167 15 data = pPcApp->getc();
dkato 1:fdcf2c6a1167 16 if (data == '{') {
dkato 1:fdcf2c6a1167 17 pos_seq = POS_SEQ_START;
dkato 1:fdcf2c6a1167 18 } else if (data == 'X') {
dkato 1:fdcf2c6a1167 19 if (pos_seq == POS_SEQ_START) {
dkato 1:fdcf2c6a1167 20 pos_seq = POS_SEQ_X;
dkato 1:fdcf2c6a1167 21 } else {
dkato 1:fdcf2c6a1167 22 pos_seq = POS_SEQ_INIT;
dkato 1:fdcf2c6a1167 23 }
dkato 1:fdcf2c6a1167 24 } else if (data == 'Y') {
dkato 1:fdcf2c6a1167 25 if (pos_seq == POS_SEQ_C) {
dkato 1:fdcf2c6a1167 26 pos_seq = POS_SEQ_Y;
dkato 1:fdcf2c6a1167 27 } else {
dkato 1:fdcf2c6a1167 28 pos_seq = POS_SEQ_INIT;
dkato 1:fdcf2c6a1167 29 }
dkato 1:fdcf2c6a1167 30 } else if (data == '=') {
dkato 1:fdcf2c6a1167 31 if (pos_seq == POS_SEQ_X) {
dkato 1:fdcf2c6a1167 32 pos_seq = POS_SEQ_X_POS;
dkato 1:fdcf2c6a1167 33 pos_wk = 0;
dkato 1:fdcf2c6a1167 34 } else if (pos_seq == POS_SEQ_Y) {
dkato 1:fdcf2c6a1167 35 pos_seq = POS_SEQ_Y_POS;
dkato 1:fdcf2c6a1167 36 pos_wk = 0;
dkato 1:fdcf2c6a1167 37 } else {
dkato 1:fdcf2c6a1167 38 pos_seq = POS_SEQ_INIT;
dkato 1:fdcf2c6a1167 39 }
dkato 1:fdcf2c6a1167 40 } else if (data == '-') {
dkato 1:fdcf2c6a1167 41 if (pos_seq == POS_SEQ_X_POS) {
dkato 1:fdcf2c6a1167 42 pos_seq = POS_SEQ_X_M;
dkato 1:fdcf2c6a1167 43 } else if (pos_seq == POS_SEQ_Y_POS) {
dkato 1:fdcf2c6a1167 44 pos_seq = POS_SEQ_Y_M;
dkato 1:fdcf2c6a1167 45 } else {
dkato 1:fdcf2c6a1167 46 pos_seq = POS_SEQ_INIT;
dkato 1:fdcf2c6a1167 47 }
dkato 1:fdcf2c6a1167 48 } else if ((data >= '0') && (data <= '9')) {
dkato 1:fdcf2c6a1167 49 if ((pos_seq == POS_SEQ_X_POS) || (pos_seq == POS_SEQ_Y_POS)) {
dkato 1:fdcf2c6a1167 50 pos_wk = (pos_wk * 10) + (data - '0');
dkato 1:fdcf2c6a1167 51 } else if ((pos_seq == POS_SEQ_X_M) && (data == '1')) {
dkato 1:fdcf2c6a1167 52 pos_wk = -1;
dkato 1:fdcf2c6a1167 53 } else if ((pos_seq == POS_SEQ_Y_M) && (data == '1')) {
dkato 1:fdcf2c6a1167 54 pos_wk = -1;
dkato 1:fdcf2c6a1167 55 } else {
dkato 1:fdcf2c6a1167 56 pos_seq = POS_SEQ_INIT;
dkato 1:fdcf2c6a1167 57 }
dkato 1:fdcf2c6a1167 58 } else if (data == ',') {
dkato 1:fdcf2c6a1167 59 if ((pos_seq == POS_SEQ_X_POS) || (pos_seq == POS_SEQ_X_M)) {
dkato 1:fdcf2c6a1167 60 pos_x_wk = pos_wk;
dkato 1:fdcf2c6a1167 61 pos_seq = POS_SEQ_C;
dkato 1:fdcf2c6a1167 62 } else {
dkato 1:fdcf2c6a1167 63 pos_seq = POS_SEQ_INIT;
dkato 1:fdcf2c6a1167 64 }
dkato 1:fdcf2c6a1167 65 } else if (data == '}') {
dkato 1:fdcf2c6a1167 66 if ((pos_seq == POS_SEQ_Y_POS) || (pos_seq == POS_SEQ_Y_M)) {
dkato 1:fdcf2c6a1167 67 pos_seq = POS_SEQ_END;
dkato 1:fdcf2c6a1167 68 if ((pos_x != pos_x_wk) || (pos_y != pos_wk)) {
dkato 1:fdcf2c6a1167 69 pos_x = pos_x_wk;
dkato 1:fdcf2c6a1167 70 pos_y = pos_wk;
dkato 3:693902c86ca0 71 if (event) {
dkato 3:693902c86ca0 72 event.call();
dkato 3:693902c86ca0 73 }
dkato 1:fdcf2c6a1167 74 }
dkato 1:fdcf2c6a1167 75 } else {
dkato 1:fdcf2c6a1167 76 pos_seq = POS_SEQ_INIT;
dkato 0:13c1f522bbef 77 }
dkato 0:13c1f522bbef 78 } else {
dkato 0:13c1f522bbef 79 pos_seq = POS_SEQ_INIT;
dkato 0:13c1f522bbef 80 }
dkato 0:13c1f522bbef 81 } else {
dkato 1:fdcf2c6a1167 82 Thread::wait(10);
dkato 0:13c1f522bbef 83 }
dkato 0:13c1f522bbef 84 }
dkato 0:13c1f522bbef 85 }
dkato 0:13c1f522bbef 86
dkato 3:693902c86ca0 87 DisplayApp::DisplayApp(osPriority tsk_pri, osPriority init_pri, uint32_t stack_size) : change_pri(tsk_pri), displayThread(init_pri, stack_size) {
dkato 3:693902c86ca0 88 // displayThread.start(this, &DisplayApp::display_app_process);
dkato 3:693902c86ca0 89 displayThread.start(callback(this, &DisplayApp::display_app_process));
dkato 0:13c1f522bbef 90 }
dkato 0:13c1f522bbef 91
dkato 0:13c1f522bbef 92 void DisplayApp::SendHeader(uint32_t size) {
dkato 0:13c1f522bbef 93 uint8_t headder_data[12] = {0xFF,0xFF,0xAA,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
dkato 0:13c1f522bbef 94
dkato 0:13c1f522bbef 95 headder_data[8] = (uint8_t)((uint32_t)size >> 0);
dkato 0:13c1f522bbef 96 headder_data[9] = (uint8_t)((uint32_t)size >> 8);
dkato 0:13c1f522bbef 97 headder_data[10] = (uint8_t)((uint32_t)size >> 16);
dkato 0:13c1f522bbef 98 headder_data[11] = (uint8_t)((uint32_t)size >> 24);
dkato 0:13c1f522bbef 99 pPcApp->writeBlock((uint8_t *)headder_data, sizeof(headder_data));
dkato 0:13c1f522bbef 100 }
dkato 0:13c1f522bbef 101
dkato 0:13c1f522bbef 102 void DisplayApp::SendData(uint8_t * buf, uint32_t size) {
dkato 0:13c1f522bbef 103 int send_size;
dkato 0:13c1f522bbef 104 int send_index = 0;
dkato 0:13c1f522bbef 105
dkato 0:13c1f522bbef 106 while (size > 0) {
dkato 0:13c1f522bbef 107 if (size > MAX_PACKET_SIZE_EPBULK) {
dkato 0:13c1f522bbef 108 send_size = MAX_PACKET_SIZE_EPBULK;
dkato 0:13c1f522bbef 109 } else {
dkato 0:13c1f522bbef 110 send_size = size;
dkato 0:13c1f522bbef 111 }
dkato 0:13c1f522bbef 112 pPcApp->writeBlock(&buf[send_index], send_size);
dkato 0:13c1f522bbef 113 send_index += send_size;
dkato 0:13c1f522bbef 114 size -= send_size;
dkato 0:13c1f522bbef 115 }
dkato 0:13c1f522bbef 116 }
dkato 0:13c1f522bbef 117
dkato 0:13c1f522bbef 118 int DisplayApp::SendRgb888(uint8_t * buf, uint32_t pic_width, uint32_t pic_height) {
dkato 0:13c1f522bbef 119 uint32_t offset_size = 54;
dkato 0:13c1f522bbef 120 uint32_t buf_stride = (((pic_width * 4u) + 31u) & ~31u);
dkato 0:13c1f522bbef 121 uint32_t pic_size = buf_stride * pic_height;
dkato 0:13c1f522bbef 122 uint32_t total_size = pic_size + offset_size;
dkato 0:13c1f522bbef 123 uint8_t wk_bitmap_buf[54];
dkato 0:13c1f522bbef 124 int wk_idx = 0;
dkato 0:13c1f522bbef 125
dkato 0:13c1f522bbef 126 if (pPcApp == NULL) {
dkato 0:13c1f522bbef 127 return 0;
dkato 0:13c1f522bbef 128 }
dkato 0:13c1f522bbef 129 if (pPcApp->_putc(0) == 0) { // terminal connect check
dkato 0:13c1f522bbef 130 return 0;
dkato 0:13c1f522bbef 131 }
dkato 0:13c1f522bbef 132 SendHeader(total_size);
dkato 0:13c1f522bbef 133
dkato 0:13c1f522bbef 134 /* BITMAPFILEHEADER */
dkato 0:13c1f522bbef 135 wk_bitmap_buf[wk_idx++] = 'B';
dkato 0:13c1f522bbef 136 wk_bitmap_buf[wk_idx++] = 'M';
dkato 0:13c1f522bbef 137 wk_bitmap_buf[wk_idx++] = (uint8_t)(total_size >> 0); /* bfSize */
dkato 0:13c1f522bbef 138 wk_bitmap_buf[wk_idx++] = (uint8_t)(total_size >> 8); /* bfSize */
dkato 0:13c1f522bbef 139 wk_bitmap_buf[wk_idx++] = (uint8_t)(total_size >> 16); /* bfSize */
dkato 0:13c1f522bbef 140 wk_bitmap_buf[wk_idx++] = (uint8_t)(total_size >> 24); /* bfSize */
dkato 0:13c1f522bbef 141 wk_bitmap_buf[wk_idx++] = 0; /* bfReserved1 */
dkato 0:13c1f522bbef 142 wk_bitmap_buf[wk_idx++] = 0; /* bfReserved1 */
dkato 0:13c1f522bbef 143 wk_bitmap_buf[wk_idx++] = 0; /* bfReserved2 */
dkato 0:13c1f522bbef 144 wk_bitmap_buf[wk_idx++] = 0; /* bfReserved2 */
dkato 0:13c1f522bbef 145 wk_bitmap_buf[wk_idx++] = (uint8_t)(offset_size >> 0); /* bfOffBits */
dkato 0:13c1f522bbef 146 wk_bitmap_buf[wk_idx++] = (uint8_t)(offset_size >> 8); /* bfOffBits */
dkato 0:13c1f522bbef 147 wk_bitmap_buf[wk_idx++] = (uint8_t)(offset_size >> 16); /* bfOffBits */
dkato 0:13c1f522bbef 148 wk_bitmap_buf[wk_idx++] = (uint8_t)(offset_size >> 24); /* bfOffBits */
dkato 0:13c1f522bbef 149
dkato 0:13c1f522bbef 150 /* BITMAPINFOHEADER */
dkato 0:13c1f522bbef 151 wk_bitmap_buf[wk_idx++] = 40; /* biSize */
dkato 0:13c1f522bbef 152 wk_bitmap_buf[wk_idx++] = 0; /* biSize */
dkato 0:13c1f522bbef 153 wk_bitmap_buf[wk_idx++] = 0; /* biSize */
dkato 0:13c1f522bbef 154 wk_bitmap_buf[wk_idx++] = 0; /* biSize */
dkato 0:13c1f522bbef 155 wk_bitmap_buf[wk_idx++] = (uint8_t)(pic_width >> 0); /* biWidth */
dkato 0:13c1f522bbef 156 wk_bitmap_buf[wk_idx++] = (uint8_t)(pic_width >> 8); /* biWidth */
dkato 0:13c1f522bbef 157 wk_bitmap_buf[wk_idx++] = (uint8_t)(pic_width >> 16); /* biWidth */
dkato 0:13c1f522bbef 158 wk_bitmap_buf[wk_idx++] = (uint8_t)(pic_width >> 24); /* biWidth */
dkato 0:13c1f522bbef 159 wk_bitmap_buf[wk_idx++] = (uint8_t)((-(long)pic_height) >> 0); /* biHeight */
dkato 0:13c1f522bbef 160 wk_bitmap_buf[wk_idx++] = (uint8_t)((-(long)pic_height) >> 8); /* biHeight */
dkato 0:13c1f522bbef 161 wk_bitmap_buf[wk_idx++] = (uint8_t)((-(long)pic_height) >> 16); /* biHeight */
dkato 0:13c1f522bbef 162 wk_bitmap_buf[wk_idx++] = (uint8_t)((-(long)pic_height) >> 24); /* biHeight */
dkato 0:13c1f522bbef 163 wk_bitmap_buf[wk_idx++] = 1; /* biPlanes */
dkato 0:13c1f522bbef 164 wk_bitmap_buf[wk_idx++] = 0; /* biPlanes */
dkato 0:13c1f522bbef 165 wk_bitmap_buf[wk_idx++] = 32; /* biBitCount */
dkato 0:13c1f522bbef 166 wk_bitmap_buf[wk_idx++] = 0; /* biBitCount */
dkato 0:13c1f522bbef 167
dkato 0:13c1f522bbef 168 wk_bitmap_buf[wk_idx++] = 0; /* biCopmression */
dkato 0:13c1f522bbef 169 wk_bitmap_buf[wk_idx++] = 0; /* biCopmression */
dkato 0:13c1f522bbef 170 wk_bitmap_buf[wk_idx++] = 0; /* biCopmression */
dkato 0:13c1f522bbef 171 wk_bitmap_buf[wk_idx++] = 0; /* biCopmression */
dkato 0:13c1f522bbef 172 wk_bitmap_buf[wk_idx++] = (uint8_t)(pic_size >> 0); /* biSizeImage */
dkato 0:13c1f522bbef 173 wk_bitmap_buf[wk_idx++] = (uint8_t)(pic_size >> 8); /* biSizeImage */
dkato 0:13c1f522bbef 174 wk_bitmap_buf[wk_idx++] = (uint8_t)(pic_size >> 16); /* biSizeImage */
dkato 0:13c1f522bbef 175 wk_bitmap_buf[wk_idx++] = (uint8_t)(pic_size >> 24); /* biSizeImage */
dkato 0:13c1f522bbef 176 wk_bitmap_buf[wk_idx++] = 0; /* biXPixPerMeter */
dkato 0:13c1f522bbef 177 wk_bitmap_buf[wk_idx++] = 0; /* biXPixPerMeter */
dkato 0:13c1f522bbef 178 wk_bitmap_buf[wk_idx++] = 0; /* biXPixPerMeter */
dkato 0:13c1f522bbef 179 wk_bitmap_buf[wk_idx++] = 0; /* biXPixPerMeter */
dkato 0:13c1f522bbef 180 wk_bitmap_buf[wk_idx++] = 0; /* biYPixPerMeter */
dkato 0:13c1f522bbef 181 wk_bitmap_buf[wk_idx++] = 0; /* biYPixPerMeter */
dkato 0:13c1f522bbef 182 wk_bitmap_buf[wk_idx++] = 0; /* biYPixPerMeter */
dkato 0:13c1f522bbef 183 wk_bitmap_buf[wk_idx++] = 0; /* biYPixPerMeter */
dkato 0:13c1f522bbef 184
dkato 0:13c1f522bbef 185 wk_bitmap_buf[wk_idx++] = 0; /* biClrUsed */
dkato 0:13c1f522bbef 186 wk_bitmap_buf[wk_idx++] = 0; /* biClrUsed */
dkato 0:13c1f522bbef 187 wk_bitmap_buf[wk_idx++] = 0; /* biClrUsed */
dkato 0:13c1f522bbef 188 wk_bitmap_buf[wk_idx++] = 0; /* biClrUsed */
dkato 0:13c1f522bbef 189 wk_bitmap_buf[wk_idx++] = 0; /* biCirImportant */
dkato 0:13c1f522bbef 190 wk_bitmap_buf[wk_idx++] = 0; /* biCirImportant */
dkato 0:13c1f522bbef 191 wk_bitmap_buf[wk_idx++] = 0; /* biCirImportant */
dkato 0:13c1f522bbef 192 wk_bitmap_buf[wk_idx++] = 0; /* biCirImportant */
dkato 0:13c1f522bbef 193 pPcApp->writeBlock(wk_bitmap_buf, wk_idx);
dkato 0:13c1f522bbef 194
dkato 0:13c1f522bbef 195 SendData(buf, pic_size);
dkato 0:13c1f522bbef 196 wk_idx += pic_size;
dkato 0:13c1f522bbef 197
dkato 0:13c1f522bbef 198 return wk_idx;
dkato 0:13c1f522bbef 199 };
dkato 0:13c1f522bbef 200
dkato 3:693902c86ca0 201 void DisplayApp::SetCallback(Callback<void()> func) {
dkato 3:693902c86ca0 202 event = func;
dkato 3:693902c86ca0 203 }
dkato 3:693902c86ca0 204
dkato 0:13c1f522bbef 205 int DisplayApp::SendJpeg(uint8_t * buf, uint32_t size) {
dkato 0:13c1f522bbef 206 if (pPcApp == NULL) {
dkato 0:13c1f522bbef 207 return 0;
dkato 0:13c1f522bbef 208 }
dkato 0:13c1f522bbef 209 if (pPcApp->_putc(0) == 0) { // terminal connect check
dkato 0:13c1f522bbef 210 return 0;
dkato 0:13c1f522bbef 211 }
dkato 0:13c1f522bbef 212 SendHeader(size);
dkato 0:13c1f522bbef 213 SendData(buf, size);
dkato 0:13c1f522bbef 214
dkato 0:13c1f522bbef 215 return size;
dkato 0:13c1f522bbef 216 }
dkato 0:13c1f522bbef 217
dkato 0:13c1f522bbef 218 int DisplayApp::GetMaxTouchNum(void) {
dkato 0:13c1f522bbef 219 return 1;
dkato 0:13c1f522bbef 220 }
dkato 0:13c1f522bbef 221
dkato 0:13c1f522bbef 222 int DisplayApp::GetCoordinates(int touch_buff_num, touch_pos_t * p_touch) {
dkato 0:13c1f522bbef 223 touch_pos_t * wk_touch;
dkato 0:13c1f522bbef 224 int count = 0;
dkato 0:13c1f522bbef 225 int x = pos_x;
dkato 0:13c1f522bbef 226 int y = pos_y;
dkato 0:13c1f522bbef 227
dkato 0:13c1f522bbef 228 if (touch_buff_num > 0) {
dkato 0:13c1f522bbef 229 count = 0;
dkato 0:13c1f522bbef 230 wk_touch = &p_touch[0];
dkato 0:13c1f522bbef 231 wk_touch->valid = false;
dkato 0:13c1f522bbef 232 wk_touch->x = 0;
dkato 0:13c1f522bbef 233 wk_touch->y = 0;
dkato 0:13c1f522bbef 234 if (x >= 0) {
dkato 0:13c1f522bbef 235 count = 1;
dkato 0:13c1f522bbef 236 wk_touch->valid = true;
dkato 0:13c1f522bbef 237 wk_touch->x = (uint32_t)x;
dkato 0:13c1f522bbef 238 }
dkato 0:13c1f522bbef 239 if (y >= 0) {
dkato 0:13c1f522bbef 240 count = 1;
dkato 0:13c1f522bbef 241 wk_touch->valid = true;
dkato 0:13c1f522bbef 242 wk_touch->y = (uint32_t)y;
dkato 0:13c1f522bbef 243 }
dkato 0:13c1f522bbef 244 }
dkato 0:13c1f522bbef 245
dkato 0:13c1f522bbef 246 return count;
dkato 0:13c1f522bbef 247 }