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