嵌入式開發(fā)小記,實(shí)用小知識分享
時(shí)間:2021-10-09 14:34:58
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(dǎo)讀]關(guān)注「Linux大陸」,選擇「星標(biāo)公眾號」一起進(jìn)步!之前為了方便測試部門保存一些測試數(shù)據(jù),需要臨時(shí)開發(fā)一個(gè)簡單的nanomsgserver,與板子端的client在局域網(wǎng)內(nèi)進(jìn)行通信,接收client數(shù)據(jù)并保存。關(guān)于nanomsg的簡單使用介紹可查看往期文章:一個(gè)實(shí)用通信庫的簡單使...
關(guān)注「Linux大陸」,選擇「星標(biāo)公眾號」一起進(jìn)步! 之前為了方便測試部門保存一些測試數(shù)據(jù),需要臨時(shí)開發(fā)一個(gè)簡單的nanomsg server,與板子端的client在局域網(wǎng)內(nèi)進(jìn)行通信,接收client數(shù)據(jù)并保存。關(guān)于nanomsg的簡單使用介紹可查看往期文章:一個(gè)實(shí)用通信庫的簡單使用分享作為server端,需要綁定電腦的IP,不同的電腦IP是不一樣的,所以使用不同的電腦時(shí)需要修改IP才能正常使用這個(gè)server程序。在不需要重新編譯程序的情況下,有如下兩種方法可以滿足這個(gè)需求: 同時(shí),inih解析器也已經(jīng)被收錄于大雜燴資源匯總貼中: 把 同時(shí),新建一個(gè)
- 把IP寫在配置文件里,比如ini格式的配置文件里,然后server程序讀取配置文件里的IP,再進(jìn)行綁定。
- server程序自動獲取IP地址并綁定。
從配置文件中讀取IP地址
配置文件的格式有很多,如JSON、INI等。這里我選用的是INI格式的配置文件,.ini 文件是Initialization File
的縮寫,即初始化文件。INI文件由節(jié)、鍵、值組成,注解使用分號表示(;)。例如:[Section1 Name]
KeyName1_1=value1_1 ;這是注釋
KeyName1_2=value1_2
[Section2 Name]
KeyName2_1=value2_1
KeyName2_2=value2_2
這里我們使用inih解析器來對INI文件進(jìn)行解析。inih:一個(gè)C 語言編寫的 INI 文件解析器。inih解析器的地址:
https://github.com/benhoyt/inih
https://gitee.com/zhengnianli/EmbedSummaryinih的使用很簡單,下面一起來看一下。下載得到的inih內(nèi)容如圖所示:
ini.c
與 ini.h
放到我們的工程下即可。這里我們使用一個(gè)測試工程:ip.ini
文件存放于工程目錄下。ip.ini
文件的內(nèi)容如:[ip] ;Section1
ip_addr = 192.168.1.103
[test] ;Section2
name = ZhengN
num = 66
下面我們編寫代碼test.c來解析這個(gè)文件://?微信公眾號:嵌入式大雜燴
#include?
#include?
#include?
#include?"ini.h"
typedef?struct
{
????const?char*?ip_addr;
????const?char*?name;
????int?num;
}?configuration;
static?int?handler(void*?user,?const?char*?section,?const?char*?name,
???????????????????const?char*?value)
{
????configuration*?pconfig?=?(configuration*)user;
????#define?MATCH(s,?n)?strcmp(section,?s)?==?0?