virtual void onText(CString &msg) { CJson json((LPTSTR)msg.getBuffer()); if ( json.error()==ERR_OK ) { switch(json["command"].asInteger()) { case 0: // toggle Date/Time gnShowType = json["value"].asInteger(); if ( gnShowType==SHOW_FOR_TIME ) { // disable date dot sslm.dot(1, false); sslm.dot(3, false); } else { // enable date dot. sslm.dot(1, true); sslm.dot(3, true); // disable time dot sslm.dot(2, false); sslm.dot(4, false); } break; case 1: // brightness sslm.brightness(json["value"].asInteger()/100.0f); // to percentage break; case 2: // time format, hour type (24/12) gnHourType = json["value"].asInteger(); break; } } }
// // iProbe run loop // void iProbe::run() { CTimeout tm; CString msg; // uint32_t m_lstCPU = 0; uint32_t m_lstNET = 0; while(1) { tm.wait(1000); tm.reset(); // // Make JSON string // msg = "{"; msg += "\"cpu\":"; msg += map(CThread::getIdleTickCount(), 0, 2000, 0, 100); msg += ", \"net\":"; msg += constrain(OFFSET(CSocket::getRxPackageCount(), m_lstNET, MAX_UINT32), 0, 100); msg += ", \"mem\":"; msg += map(heapAvailableSize(), 0, MAX_USERS_MEMORY, 100, 0); msg += "}"; // // Send JSON message to All mail receiver // CMailBox::post(xMAIL_PROBE, msg.getBuffer()); // // m_lstCPU = CThread::getIdleTickCount(); m_lstNET = CSocket::getRxPackageCount(); } }
void CParticiple::splitter(const char *szPath, const char *szMark) { int nTmp; int nIndex; int nIndexPhase; CFileHandler fh; set<string> setData; CMysqlHandler mysql; CString strSQL; set<string>::const_iterator iter_set; CString strFileName; CString strFilePath; string strContent; vector<string> vecPhase; fh.readPath(szPath, setData); if(0 >= setData.size()) { _log("[CParticiple] splitter Path: %s no file", szPath); return; } mysql.connect(EDUBOT_HOST, EDUBOT_DB, EDUBOT_ACCOUNT, EDUBOT_PASSWD, "5"); if(!mysql.isValid()) { _log("[CParticiple] splitter MySQL invalid"); return; } for(iter_set = setData.begin(); setData.end() != iter_set; ++iter_set) { nIndex = iter_set->rfind("."); if((int) string::npos != nIndex) { if(!iter_set->substr(nIndex + 1).compare("txt")) { strFileName = trim(iter_set->substr(0, nIndex)); _log("[CParticiple] splitter Start analysis file: %s", iter_set->c_str()); strFilePath.format("%s%s", szPath, iter_set->c_str()); strContent.clear(); if(!fh.readContent(strFilePath.getBuffer(), strContent, true)) continue; strSQL.format("DELETE FROM story_affective WHERE story = '%s'", strFileName.getBuffer()); mysql.sqlExec(strSQL.toString()); //======= 特殊符號替換 =======// strContent = ReplaceAll(strContent, "。”", "”。"); strContent = ReplaceAll(strContent, "。」", "」。"); _log("[CParticiple] splitter Content: %s", strContent.c_str()); //======= 字串分詞 ========// int nIndex = 0; int nLen = 0; int nCount = 0; CString strPart; while(1) { if(nCount) nIndex = nIndex + nLen + strlen(szMark); nLen = strContent.find(szMark, nIndex); if((int) string::npos == nLen) break; nLen = nLen - nIndex; printf("index=%d , size=%d\n", nIndex, nLen); strPart = strContent.substr(nIndex, nLen); printf("part: %s\n", strPart.getBuffer()); strSQL.format("INSERT INTO story_affective (story,numbering,sentence)VALUES('%s',%d,'%s')", strFileName.getBuffer(),nCount,strPart.getBuffer()); mysql.sqlExec(strSQL.toString()); ++nCount; } } } } mysql.close(); }
// // AT command handle // void at_command_handle(CStream *p_serial, CString &str) { str.makeUpper(); // finds command with command list. and return the index of the command list, if found. switch( str.find(at_cmd_list, ATCMD_COUNT) ) { case 0: // set interval in millisecond. m_beacon.interval = str.parseInt(10); str = "OK\n"; break; case 1: // get interval str.printf("%dms\n", m_beacon.interval); break; case 2: // set tx power m_beacon.tx_power =(BLE_TX_POWER_T) str.parseInt(9); str = "OK\n"; break; case 3: // get tx power str.printf("%ddBm\n", m_beacon.tx_power); break; case 4: // set company id m_beacon.company_id = str.parseHex(6); str = "OK\n"; break; case 5: // get company id str.printf("0x%04X\n", m_beacon.company_id); break; case 6: // set major value msb_value_set(m_beacon.data.major, str.parseInt(7)); str = "OK\n"; break; case 7: // get major value str.printf("%d\n", msb_value_get(m_beacon.data.major)); break; case 8: // set minor value msb_value_set(m_beacon.data.minor, str.parseInt(7)); str = "OK\n"; break; case 9: // get minor value str.printf("%d\n", msb_value_get(m_beacon.data.minor)); break; case 10:// set measure rssi m_beacon.data.meas_rssi = str.parseInt(6); str = "OK\n"; break; case 11:// get measure rssi str.printf("%d\n", m_beacon.data.meas_rssi); break; case 12:// save m_p_sgBeacon->write(&m_beacon, sizeof(m_beacon)); str = "OK\n"; break; case 13:// reset system_reset(); break; case 14:// goto DFU gotoDFU(); break; default:// command not found str = "ERROR\n"; break; } // response to stream p_serial->write(str.getBuffer(), str.length()); }
virtual void onText(CString &msg) { CJson json(msg.getBuffer()); // parse the message by CJson servoX = json["x"].asFloat(); // set X angle to servoX servoY = json["y"].asFloat(); // set Y angle to servoY dbg.printf("%0.2f, %0.2f\n", json["x"].asFloat(), json["y"].asFloat()); }
void CChihlee::runAnalysis(const char *szInput, JSONObject &jsonResp) { CFileHandler file; CString strWord = szInput; CResponsePacket respPacket; CString strText; CString strSound; CString strScreen; strWord.replace("笑訊", "校訓"); strWord.replace("校去", "校訓"); strWord.replace("治理", "致理"); ofstream csWordFile("/chihlee/jetty/webapps/chihlee/Text.txt", ios::trunc); strText.format("%s\n \n ", szInput); csWordFile << strText.getBuffer() << endl; csWordFile.close(); remove("/chihlee/jetty/webapps/chihlee/map.jpg"); //=============== 校園導覽 =================================// if (0 <= strWord.find("導覽") || 0 <= strWord.find("地圖") || 0 <= strWord.find("參觀") || 0 <= strWord.find("校園")) { strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_1.wav"; strScreen = "/chihlee/jetty/webapps/chihlee/img/map.jpg"; } //=============== 廁所怎麼走 =================================// if (0 <= strWord.find("廁所") || 0 <= strWord.find("洗手間") || 0 <= strWord.find("大便") || 0 <= strWord.find("小便") || 0 <= strWord.find("方便間")) { strScreen = "/chihlee/jetty/webapps/chihlee/img/wc_map.jpg"; strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_2.wav"; } //=============== 我想找電動輪椅充電 =================================// if (0 <= strWord.find("電動輪椅") || 0 <= strWord.find("輪椅充電") || 0 <= strWord.find("充電") || 0 <= strWord.find("沒電")) { strScreen = "/chihlee/jetty/webapps/chihlee/img/wc_map.jpg"; strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_3.wav"; } //=============== 圖書館怎麼走 =================================// if (0 <= strWord.find("圖書館") || 0 <= strWord.find("圖館") || 0 <= strWord.find("書館") || 0 <= strWord.find("看書")) { strScreen = "/chihlee/jetty/webapps/chihlee/img/wc_map.jpg"; strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_4.wav"; } //=============== 校訓 =================================// if (0 <= strWord.find("校訓") || 0 <= strWord.find("誠信") || 0 <= strWord.find("致理科大")) { strScreen = "/chihlee/jetty/webapps/chihlee/img/motto.png"; strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_5.wav"; } //=============== 吉祥物 =================================// if (0 <= strWord.find("吉祥物") || 0 <= strWord.find("喜鵲")) { strScreen = "/chihlee/jetty/webapps/chihlee/img/character.jpg"; strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_6.wav"; } //=============== 校歌 =================================// if (0 <= strWord.find("校歌") || 0 <= strWord.find("學生活動")) { strScreen = "/chihlee/jetty/webapps/chihlee/img/song.jpg"; strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_7.wav"; } //================ 謝謝你的解說=====================// if (0 <= strWord.find("謝謝") || 0 <= strWord.find("感謝") || 0 <= strWord.find("掰掰") || 0 <= strWord.find("拜拜") || 0 <= strWord.find("謝啦") || 0 <= strWord.find("謝拉")) { remove("/chihlee/jetty/webapps/chihlee/map.jpg"); strSound = "/chihlee/jetty/webapps/chihlee/wav/wav_8.wav"; } file.copyFile(strScreen.getBuffer(), "/chihlee/jetty/webapps/chihlee/map.jpg"); playSound(strSound.getBuffer()); respPacket.setActivity<int>("type", RESP_TTS).setActivity<const char*>("lang", "zh").setActivity<const char*>("tts", "").format(jsonResp); }