久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3175|回復: 5
打印 上一主題 下一主題
收起左側

C語言長整型變量long轉字符串發送問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:398219 發表于 2021-9-1 08:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
C語言定義長整型變量unsigned long count=123456;
我想通過串口,將這個變量上傳服務器,請問如何將這個long變量轉成字符串通過串口發送呢,程序中發送命令在POST(),請各位大神幫忙看看。

void POST(void)//POST數據函數
{
        int dataLen;
        uchar postData[150];
        char strLen[3];
        char strtemp[20];
        sprintf(strtemp,"%d",count);
        sprintf(postData,"uid=%s&topic=%s&msg=#%0x#\r\n",Uid,Topic,strtemp);
        dataLen = strlen(postData);             //計算數據長度
        sprintf(strLen,"%d",dataLen);                     //int類型轉char


        ESP8266_Set("AT+CIPMODE=1"); //開啟透明傳輸模式
        ms_delay(1000);
        ESP8266_Set("AT+CIPSTART=\"TCP\",\"api.bemfa點com\",80");  // 連接服務器和端口
        ms_delay(1000);
        ESP8266_Set("AT+CIPSEND"); //進入透傳模式,下面發的都會無條件傳輸
        ms_delay(1000);
        ESP8266_Set_Only("POST /api/device/v1/data/1/ HTTP/1.1\r\nHost: api.bemfa點com\r\nContent-Type: application/x-www-form-        urlencoded\r\nConnection:close\r\nContent-Length:");//??device? ??sensor?
        ESP8266_Set(strLen);//數據長度(postData數據長度),一定要準確
        ESP8266_Set("");//回車(發完數據長度后,有回車,不懂的百度http post 格式)
        ESP8266_Set(postData);//發送數據        
        ms_delay(2000);
        ESP8266_Set("+++"); //
        memset(strLen,'\0',3);  //重置數組
        memset(postData,'\0',sizeof postData);//重置數組

}

V3.1 - 測試無線通訊.rar

82.52 KB, 下載次數: 3

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:624769 發表于 2021-9-1 19:04 | 只看該作者
傳數據給服務器,最好不要轉字符串,要轉也是服務器收到后,服務器端轉,不知道現在編程都是什么思路,我們以前但凡牽涉到傳輸,恨不得把4個字節拼成1個字節傳,現在倒好各個都喜歡把一個字節拆成十幾個來傳.

Long 型 32位數據,最長10位10進制,最直接的辦法就是
SendByte_uart((count / 1000000000)+'0');
SendByte_uart(((count % 1000000000) / 100000000)+'0');
SendByte_uart(((count % 100000000) / 10000000)+'0');
SendByte_uart(((count % 10000000) / 1000000)+'0');
SendByte_uart(((count % 1000000) / 100000)+'0');
SendByte_uart(((count % 100000) / 10000)+'0');
SendByte_uart(((count % 10000) / 1000)+'0');
SendByte_uart(((count % 1000) / 100)+'0');
SendByte_uart(((count % 100) / 10)+'0');
SendByte_uart((count % 10)+'0');

這樣最直接,你要是覺得沒有For循環不夠高大上,可以做個循環,每次求出與數存為下一次的被除數,如果你覺得首位不要顯示0,可以加一個判斷,比如:
if((count / 1000000000) != 0)  SendByte_uart((count / 1000000000)+'0');
恩,差不多就是這樣。

評分

參與人數 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:401564 發表于 2021-9-1 22:04 | 只看該作者
unsigned long count=123456;
unsigned char,a;
char strtemp[20];
sprintf(strtemp,"%.0f",count);        //"%.0f"的0f表示小數點后再顯示位數,不顯示小數就是0f,方便處理浮點型
                for(a=0;k[a]!='\0';a++)                          //字符串以'\0'結束,
                        {       
                                發送函數; 這個實際上就發送了'0','2','3','4','5' 記錄了發送幾個字符                       
                        }
回復

使用道具 舉報

地板
ID:750420 發表于 2021-9-2 15:14 | 只看該作者
同意二樓說法,使用sprintf函數進行發送,基本形式為
char chuan[100];
long a;
sprintf(chuan,"long:%ld",a);
樓主可以嘗試用下看看chuan數組內的內容
回復

使用道具 舉報

5#
ID:839835 發表于 2021-9-3 17:03 | 只看該作者
本帖最后由 xunzhaod 于 2021-9-3 17:10 編輯

直接用指針不就行啦?
char (*p)[4] =(char(*)[4] ) &count;
回復

使用道具 舉報

6#
ID:398219 發表于 2021-9-9 14:20 | 只看該作者
謝謝大家的分享,咨詢了管理員,只改了一個字母就行啦,可以上傳并被服務器識別。謝謝大家
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线免费小视频 | 毛片毛片毛片毛片毛片 | 久久国产精品一区二区三区 | 亚洲精品久久 | 男人天堂国产 | 91国产精品在线 | 视频1区 | 尤物视频在线免费观看 | 国产中的精品av涩差av | 国产精品欧美精品日韩精品 | 五月婷婷丁香 | 亚洲视频在线免费观看 | 精品中文字幕在线观看 | 久久国产精品亚洲 | 91新视频| 久久综合av | 超碰美女在线 | 亚洲欧美第一视频 | 91免费电影 | 国偷自产av一区二区三区 | 中文字幕日韩在线 | 欧美a级成人淫片免费看 | 久久久精品网 | 国产一区在线免费观看视频 | 久久精品免费一区二区三 | 午夜影院在线观看 | 国产精品久久777777 | 国产日韩欧美一区二区 | 中文字幕亚洲视频 | 91亚洲国产成人久久精品网站 | 在线观看亚洲 | 亚洲高清视频在线 | 一区二区高清 | 一区二区在线不卡 | 中国大陆高清aⅴ毛片 | 天天干天天操天天爽 | 中日av| 草久久 | 精品欧美在线观看 | 午夜免费视频 | 美女国产一区 |