https://qiita.com/sukinasaki/
https://qiita.com/kummn/items/
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
逆引きの162頁 esp01からのレスを無視する問題多いコード
まずhighly recommend にしたがいmcc versionを上げた
esuart はstdio redirect にチェックがはいっていた そのためであろうか
しかし、下記のコードではprintfつかってないので、上記のチェックをはずしても動いた
C99にプロパティ変えても動いた 後閑さんの混乱?多分
TX,RXはpin-manager.cをみて了解した pin18:rx,pin17:txだった
傍受にはFTDIのrxをpin18,txをpin17につけると傍受できる!
/*****************************************
* Wi-Fi テストプログラム
* Wi-FiPC
*****************************************/
#include "mcc_generated_files/mcc.h"
/* 送信データ */
uint8_t Buf[] = "POT = x.xx Volt\r\n";
int result, i;
float Volt;
/* WiFi設定用コマンドデータ */
const uint8_t Mode[] = "AT+CWMODE=1\r\n";
//const uint8_t Join[] = "AT+CWJAP=\"Bufflalo-2G-8340\",\"636nsa535ds3v\"\r\n";
const uint8_t Join[] = "AT+CWJAP=\"HUAWEI@nova@lite@3+\",\"99991111\"\r\n";
//const uint8_t Open[] = "AT+CIPSTART=\"TCP\",\"192.168.11.8\",8000\r\n";
const uint8_t Open[] = "AT+CIPSTART=\"TCP\",\"192.168.43.1\",8080\r\n";
const uint8_t Send[] = "AT+CIPSEND=17\r\n"; // 転送開始
const uint8_t Close[] = "AT+CIPCLOSE\r\n"; // サーバ接続解除
const uint8_t Shut[] = "AT+CWQAP\r\n"; // Ap接続解除
/* 関数プロトタイプ */
void SendCmd(const uint8_t *cmd);
void ftostring(int seisu, int shousu, float data, uint8_t *buffer);
/***** メイン関数 *****/
void main(void)
{
SYSTEM_Initialize(); // システム初期化
/** APとサーバに接続 15秒ディレイを多めにした***/
__delay_ms(5000);
__delay_ms(5000);
__delay_ms(5000);
SendCmd(Mode); // Station Mode
__delay_ms(5000); // 5sec待ち
__delay_ms(5000); // 5sec待ち
__delay_ms(5000); // 5sec待ち
SendCmd(Join);
__delay_ms(5000); // 5sec待ち
__delay_ms(5000); // 5sec待ち
__delay_ms(5000); // 5sec待ち
SendCmd(Open); // サーバ(PC)と接続
__delay_ms(2000); // 2sec待ち
while (1)
{
/*** データ10回送信 ****/
for(i=0; i<10; i++){
LED_SetHigh(); // 目印ON
result = ADC_GetConversion(POT);// AD変換
Volt = (result * 3.3) / 1023; // 電圧に変換
ftostring(1, 2, Volt, Buf+6); // 文字列に変換
/** Wi-Fi送信開始 ***/
SendCmd(Send); // 文字送信開始
SendCmd(Buf); // データ送信実行
LED_SetLow(); // 目印オフ
__delay_ms(3000); // 繰り返し3秒待ち
}
/*** APとサーバから切り離し ****/
SendCmd(Close); // サーバ接続解除
SendCmd(Shut); // AP接続解除
}
}
/********************************
* WiFiコマンド送信関数
* 遅延挿入後戻る
********************************/
void SendCmd(const uint8_t *cmd)
{
while(*cmd != 0) // 文字列の終わりまで繰り返し
EUSART_Write(*cmd++); // 1文字送信し次の文字へ
__delay_ms(1000); // 1秒待ち 応答受信無視
}
/***********************************
* Floatから文字列へ変換
* 合計有効桁は8桁以下とすること
***********************************/
void ftostring(int seisu, int shousu, float data, uint8_t *buffer)
{
int i;
long dumy;
if(shousu != 0) //小数部桁ありか
buffer += seisu+shousu+1; //全体桁数+小数点
else //小数部桁なしのとき
buffer += seisu + shousu; //全体桁数のみ
buffer--; //配列ポインタ-1
for(i=0; i<shousu; i++) //小数部を整数に変換
data = data * 10; //10倍
// dumyがオーバーフローすると変換不可(8桁が限界)
dumy = (long) (data + 0.5); //四捨五入して整数に変換
for(i=shousu; i>0; i--) { //小数桁数分繰り返し
*buffer =(uint8_t)(dumy % 10)+'0';//数値を文字に変換格納
buffer--; //格納場所下位から上位へ
dumy /= 10; //次の桁へ
}
if(shousu != 0) { //小数桁0なら小数点なし
*buffer = '.'; //小数点を格納
buffer--; //ポインタ-1
}
for(i=seisu; i>0; i--) { //整数桁分繰り返し
*buffer = (uint8_t)(dumy % 10)+'0';//数値を文字に変換格納
buffer--; //ポインタ-1
dumy /= 10; //次の桁へ
}
}
0 件のコメント:
コメントを投稿