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:
Fri Sep 16 08:04:52 2016 +0000
Revision:
1:fdcf2c6a1167
Parent:
0:13c1f522bbef
Child:
2:b7ffe5216cd7
Fix reception processing.

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 0:13c1f522bbef 12 displayThread.set_priority(osPriorityNormal);
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 1:fdcf2c6a1167 71 event.call();
dkato 1:fdcf2c6a1167 72 }
dkato 1:fdcf2c6a1167 73 } else {
dkato 1:fdcf2c6a1167 74 pos_seq = POS_SEQ_INIT;
dkato 0:13c1f522bbef 75 }
dkato 0:13c1f522bbef 76 } else {
dkato 0:13c1f522bbef 77 pos_seq = POS_SEQ_INIT;
dkato 0:13c1f522bbef 78 }
dkato 0:13c1f522bbef 79 } else {
dkato 1:fdcf2c6a1167 80 Thread::wait(10);
dkato 0:13c1f522bbef 81 }
dkato 0:13c1f522bbef 82 }
dkato 0:13c1f522bbef 83 }
dkato 0:13c1f522bbef 84
dkato 0:13c1f522bbef 85 /* static */void DisplayApp::display_app_process_static(void const * arg) {
dkato 0:13c1f522bbef 86 ((DisplayApp *)arg)->display_app_process();
dkato 0:13c1f522bbef 87 }
dkato 0:13c1f522bbef 88
dkato 0:13c1f522bbef 89 DisplayApp::DisplayApp() : displayThread(DisplayApp::display_app_process_static, (void *)this, osPriorityLow, 1024) {
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 0:13c1f522bbef 201 int DisplayApp::SendJpeg(uint8_t * buf, uint32_t size) {
dkato 0:13c1f522bbef 202 if (pPcApp == NULL) {
dkato 0:13c1f522bbef 203 return 0;
dkato 0:13c1f522bbef 204 }
dkato 0:13c1f522bbef 205 if (pPcApp->_putc(0) == 0) { // terminal connect check
dkato 0:13c1f522bbef 206 return 0;
dkato 0:13c1f522bbef 207 }
dkato 0:13c1f522bbef 208 SendHeader(size);
dkato 0:13c1f522bbef 209 SendData(buf, size);
dkato 0:13c1f522bbef 210
dkato 0:13c1f522bbef 211 return size;
dkato 0:13c1f522bbef 212 }
dkato 0:13c1f522bbef 213
dkato 0:13c1f522bbef 214 int DisplayApp::GetMaxTouchNum(void) {
dkato 0:13c1f522bbef 215 return 1;
dkato 0:13c1f522bbef 216 }
dkato 0:13c1f522bbef 217
dkato 0:13c1f522bbef 218 int DisplayApp::GetCoordinates(int touch_buff_num, touch_pos_t * p_touch) {
dkato 0:13c1f522bbef 219 touch_pos_t * wk_touch;
dkato 0:13c1f522bbef 220 int count = 0;
dkato 0:13c1f522bbef 221 int x = pos_x;
dkato 0:13c1f522bbef 222 int y = pos_y;
dkato 0:13c1f522bbef 223
dkato 0:13c1f522bbef 224 if (touch_buff_num > 0) {
dkato 0:13c1f522bbef 225 count = 0;
dkato 0:13c1f522bbef 226 wk_touch = &p_touch[0];
dkato 0:13c1f522bbef 227 wk_touch->valid = false;
dkato 0:13c1f522bbef 228 wk_touch->x = 0;
dkato 0:13c1f522bbef 229 wk_touch->y = 0;
dkato 0:13c1f522bbef 230 if (x >= 0) {
dkato 0:13c1f522bbef 231 count = 1;
dkato 0:13c1f522bbef 232 wk_touch->valid = true;
dkato 0:13c1f522bbef 233 wk_touch->x = (uint32_t)x;
dkato 0:13c1f522bbef 234 }
dkato 0:13c1f522bbef 235 if (y >= 0) {
dkato 0:13c1f522bbef 236 count = 1;
dkato 0:13c1f522bbef 237 wk_touch->valid = true;
dkato 0:13c1f522bbef 238 wk_touch->y = (uint32_t)y;
dkato 0:13c1f522bbef 239 }
dkato 0:13c1f522bbef 240 }
dkato 0:13c1f522bbef 241
dkato 0:13c1f522bbef 242 return count;
dkato 0:13c1f522bbef 243 }