新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 使用LabVIEW遇到結(jié)構(gòu)體對(duì)齊問(wèn)題

使用LabVIEW遇到結(jié)構(gòu)體對(duì)齊問(wèn)題

作者: 時(shí)間:2017-01-05 來(lái)源:網(wǎng)絡(luò) 收藏
在LV和VC的WIN32 DLL之間傳遞下面結(jié)構(gòu)體。
typedef struct npm_axis
{
int axis_select;
int sv;//初始速度
int v;//驅(qū)動(dòng)速度
//int acc;//直線加速度
//int dec;//直線減速度
int sacc;//s曲線加速區(qū)間
int sdec;//s曲線減速區(qū)間
int tacc;//加速時(shí)間
int tdec;//減速時(shí)間
char line_s;//加速模式
int limit_speed;//速度限制
int pos;//絕對(duì)
int dis; //增量
int center;
//int speed;//啟動(dòng)指令
} uAXIS;

結(jié)果char下面的數(shù)據(jù)全都錯(cuò)誤。網(wǎng)上查找到了原因是:LV是采用一個(gè)字節(jié)對(duì)齊的方式,也就是說(shuō),LV的簇是無(wú)縫隙存儲(chǔ)的,占用空間的大小就是這個(gè)元素占用空間大小之和。而通常DLL中采用的是整形量對(duì)齊(與編譯器有關(guān))。

可以把char改為int來(lái)應(yīng)付急用。建議參考LV中的CALL DLL.VI的例子。






評(píng)論


技術(shù)專區(qū)

關(guān)閉