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 Sep 15 02:58:33 2016 +0000
Revision:
0:13c1f522bbef
Child:
1:fdcf2c6a1167
first commit

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