久久久久久久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青娱乐在线 | av中文在线 | 黄色一级大片在线免费看产 | 国产主播第一页 | 综合久| 三级视频在线观看 | 91在线精品视频 | 不卡的av在线 | 日韩综合在线 | 久久久久久久久久久久久久国产 | 中文字幕在线二区 | 日日艹夜夜艹 | 国产精品久久久久久久久久免费看 | 日韩精品在线免费观看视频 | 久久精品伊人 | 日韩精品一区二区三区在线观看 | 成人午夜精品 | 中文字幕一级毛片视频 | 久在线| 久久免费精品 | 免费毛片网站在线观看 | 中文精品视频 | 精品国产乱码久久久久久蜜柚 | 国产欧美在线视频 | 国产99久久精品一区二区永久免费 | 一级片在线播放 | 欧美精品一区二区在线观看 | 日本精品在线播放 | 精品影院 | 国产免费一区二区 | 亚洲激情在线 | 在线观看视频91 | 国产视频亚洲视频 | 91久久网站 | 亚洲免费在线 | a级大片免费观看 | 久久精品91久久久久久再现 | 青青草在线视频免费观看 | 欧美日韩久久久久 | 亚洲欧洲视频 | 国产成人久久精品一区二区三区 |