非arduino编程问题求助
#define NFIELDS (11)//主函数调用下面这个函数
ParseCommands(buf, pFields, NFIELDS, ","); //buf是串口进来的数据,字符串格式
//函数
void ParseCommands(char* Buffer, char** pFields, uint32_t numFields, char* delimiter)
{
char* pString = Buffer;
char* pField;
for (uint32_t i=0; i<numFields; i++)
{
pField = strtok(pString, delimiter);
if (pField != NULL)
{
pFields = pField;
}
else
{
pFields = "";
}
pString = NULL; //parse next
}
if (strcmp("init", pFields) == 0)//如果关键字为init
{
ILI9340_Display tft = ILI9340_Display(D11,D12,D13,D10,D9,D8);//初始化定义引脚
tft.DispInit();//执行初始化过程
tft.FillScreen(ILI9340_CYAN);//初始化后填充某颜色
}
}
大概就是这样的,主函数调用ParseCommands(buf, pFields, NFIELDS, ",")的时候,除了串口进来的buf和“,”参数之外,其他2个参数是怎么来的?
为何经常调用函数失败?一直卡在这里,偶尔能调用成功,屏幕有反应。
你已有源碼了, 源碼本身就是最好最清楚的說明, 只有幾句的, 看看也不花時間吧.
> 除了串口进来的buf和“,”参数之外,其他2个参数是怎么来的?
有關 pFileds 的作用, 看這兩句吧:
pField = strtok(pString, delimiter);
:
pFields = pField;
numFields 就更簡單了:
for (uint32_t i=0; i<numFields; i++)
调用函数失败的原因, 要看看你把什麼東西放進去, garbage in garbage out.
屏幕是否有反应, 有可能是分拆出了問題, 也有可能是屏幕的問題. Super169 发表于 2014-10-2 12:36 static/image/common/back.gif
你已有源碼了, 源碼本身就是最好最清楚的說明, 只有幾句的, 看看也不花時間吧.
> 除了串口进来的buf和“ ...
谢谢你的回复,不过有一点我不能理解。
函数的参数,难道不是在调用的时候就指定进去的吗?
我看这个函数写的是先调用了,然后在函数里边再生成的 maxims 发表于 2014-10-2 14:19 static/image/common/back.gif
谢谢你的回复,不过有一点我不能理解。
函数的参数,难道不是在调用的时候就指定进去的吗?
>函数的参数,难道不是在调用的时候就指定进去的吗?
你的例子中, pFields 雖然是參數之一, 但它的作用是提供一個回傳的點, 而非要提供任何資料.
或者你可以看成是 pass by reference 的一個例子.但這個有點複雜, 因為它是一個 char**, 而非一個直接的 pointer, 因為它要回傳多個 char array (或者你可以看成是幾個 string, 因為每個 string 也是 char array), 而每個 string 都是由 strtok 生成的.
Super169 发表于 2014-10-3 15:46 static/image/common/back.gif
>函数的参数,难道不是在调用的时候就指定进去的吗?
你的例子中, pFields 雖然是參數之一, 但它的作 ...
好吧~虽然还不是很理解,但是,非常感谢你的耐心解答~:$
页:
[1]