1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Origin C编程 -- 自定义函数按位解读数据列

Origin C编程 -- 自定义函数按位解读数据列

时间:2021-01-30 20:41:47

相关推荐

Origin C编程 -- 自定义函数按位解读数据列

Origin C编程指南地址:Help Online - Origin C - Origin C Programming Guide

Origin C参考(Origin C Reference)地址:Help Online - Origin C - Origin C Reference

这几天查阅Origin C编程的资料,竟然发现有人把它当做收费资源上传到了CSDN。感觉很是搞笑。也很无奈。对于初学者来说,想找到合适的资料,真的太难了。于是有了这一篇博文。

本人用的Origin版本是OriginPro 9.0

1、首先,在工作中遇到一个问题:我有一张数据表,其中有一列数据是设备的状态。在这里假定这个状态字数据列有两个字节,bit0~bit15,其中的bit3-bit5这三个位代表一个设备的状态。我需要单独的分析【bit3-bit5】所代表的设备状态变化情况。这就需要用到Origin C编程,写一个函数,用来转换状态字数据列的特定位。在OriginPro9.0的主界面里,按ALT+4,就进入了Code Builder编程IDE环境。New一个C File,输入文件名,系统自动建立C代码文件。写下了代码如下:

int Read_cWord(string cWord,int hiBit,int loBit)

{

unsigned int iWord = 0,iRet = 0,iRet1 = 0;

char str[10] = {0};

int ilen = strlen(cWord);

lstrcpy(str,cWord);

if(ilen == 6) //包含0x开头,如 0x3efa 这样的状态字

iWord = Hex2Dec((char *)&str[2]);

else iWord = Hex2Dec(str);

iRet = iWord << (31-hiBit);

iRet1 = iRet >> (31-hiBit+loBit)

returniRet1;

}

接着又谢了一段测试函数:

int test()

{

string val = 0xefc3;

printf("%x",Read_cWord(val,5,3));

return 0;

}

按Shilft+F8构建,然后在LabTalk控制台(Command &Result窗口)输入test回车,即可看到执行结果。

2、代码写好了也Build成功,怎么使用呢?回到我的工作环境,第二列是我要分析的状态字数据列,于是在第三列插入一列,并选择这一空列,右键菜单里”Set Column Values",此时弹出窗口,允许输入这一列的值。弹窗的F(x)菜单里,有"User Origin C",可以看到刚编译好的函数Read_cWord会出现在这里。如果没有出现,请重启Origin在编译试试。选择Read_cWord函数,系统自动把调用格式填写好。修改成这样:

Read_cWord(Col(B),5,3)

点击OK即可。可以看到这一列填好了数据,是第二列的bit3~bit5转换成的整数。

3、补充说明:Origin C的库函数(比如string类的函数)跟GNU C库函数有很大不同。详细用法请参阅Origin自带的Help文档。里面有例子,很好用。

中电科集团公司第二十七研究所

王德亮 107415897@

-04-23

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。