signal
(Signal transform coefficients, linear measurement and Reconstruction, compressed sensing, and image post-processing)
网上参考了一些CRC16-8的代码,大部分只能对一次数据的校验,对于MODBUS协议来说,需要连续对N个数据进行校验,需要根据协议对CRC16进行准柜台描述来完成数据校验
关于ads 1.2 的命令行调试
手里有一块别人废弃的lpc2378 的开发板,是优龙科技的,以前工作当中使用命令行编译,现在想移植一个简单的工程到命令行下进行调试,所有源代码保持不变的情况下,将makefile中的所有选项也按照mcp工程的进行配置后,还是无法像ads编译出来的能正常运行。对比编译后的文件发现,相同代码,相同的编译器,相同的参数,编译出来的文件却不一样。最终查明为armcc对路径变化有问题。应特别注意。
想做一个利用C# 读取excel 并导出报表,还需要自动识别我做好excel模板。在读取单元格时需要做比较,但是在比较时单元格内容中含有字符数字、小数,没事我就用手机C4droid编程软件实现了用C程序来完成了拆分。代码贡献如下:
#include<stdio.h>
#include<string.h>
#include<assert.h>
int is_digit(char ch)
{
if (ch >= '0' && ch <= '9')
return 1;
else
return 0;
}
int is_space(char ch)
{
if (ch == ' ')
return 1;
else
return 0;
}
double atof(char *s)
{
double power, value;
int i, sign;
assert(s != NULL); // 判断字符串是否为空
for (i = 0; is_space(s[i]); i++); // 除去字符串前的空格
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '-' || s[i] == '+') // 要是有符号位就前进一位
i++;
for (value = 0.0; is_digit(s[i]); i++) // 计算小数点钱的数字
value = value * 10.0 + (s[i] - '0');
if (s[i] == '.')
i++;
for (power = 1.0; is_digit(s[i]); i++) // 计算小数点后的数字
{
value = value * 10.0 + (s[i] - '0');
power *= 10.0;
}
return sign * value / power;
}
int main(void)
{
char arr1[] =
".2f5dj我想jxf实现i100hff-一个9.2字符串53.7g中提取h-6小数,整数-2.3-.2:9fgjvfg-4.88-3-";
char arr2[] = "-0123456789.";
char buf[50] = { 0 };
char result[100] = { 0 };
int i = 0, j = 0, t = 0;
int flag = 0;
int isDecimal = 0;
float fBuf[100] = { 0 };
int iBuf[100] = { 0 };
int Iindex = 0, Findex = 0;
int CountFlag = 0;
int value = 0;
for (i = 0; i < strlen(arr1); ++i)
{
for (j = 0; j < strlen(arr2); ++j)
{
if (arr1[i] == arr2[j])
break;
}
flag = 0;
CountFlag = 0;
if ('-' == arr1[i])
{
if (result[0] != '-' && i+1 <= strlen(arr1) && is_digit(arr1[i + 1]))
{
flag = 1;
}
}
else if ('.' == arr1[i])
{
if (i > 0 && is_digit(arr1[i - 1]) && is_digit(arr1[i + 1]) && i+1 <= strlen(arr1))
{
if (!isDecimal)
{
flag = 1;
isDecimal = 1;
}
}
}
else
{
flag = 1;
}
if (j != strlen(arr2) && flag)
{
memset(buf, 0, sizeof(buf));
sprintf(buf, "%c", arr1[i]);
strcat(result, buf);
printf("%s\n", result);
if ((i + 1) == strlen(arr1))
{
CountFlag = 1;
}
}
else
{
if (t != i)
{
t = i;
CountFlag = 1;
}
++t;
}
if (CountFlag)
{
if (isDecimal)
{
// printf("字符串方式打印:%s\n", result);
fBuf[Findex] = atof(result);
// printf("atof转换后打印:%lf\n", fBuf[Findex]);
++Findex;
isDecimal = 0;
}
else
{
iBuf[Iindex] = atoi(result);
++Iindex;
}
memset(result, 0, sizeof(result));
}
}
printf("\n原字符串: %s\n", arr1);
printf("\n小数部分 \n");
for (i = 0; i < Findex; ++i)
{
printf("%.2f ", fBuf[i]);
}
printf("\n整数部分 \n");
for (i = 0; i < Iindex; ++i)
{
printf("%d ", iBuf[i]);
}
return 0;
}
窗体属性(Opacity)的设置
Form.Opacity属性用来获取或设置窗体的透明度级别,其语法格式如下:
public double System.Windows.Forms.Form.Opacity;
this.Opacity = 0.2;