永发信息网

c#里,通过串口收到的数据会转换为16进制字符串,想将数据存入数据库,应该怎么写?

答案:4  悬赏:10  手机版
解决时间 2021-12-28 13:13
用的是05版本的,我觉得16进制需要转成10进制存入吧,程序应该怎么写求大神指导啊,数据库链接神马的都编好了。下面是我写的实验用的程序,转10进制就蒙圈了已经。
private void DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)//16进制接收模式
{
int n = serialPort.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据
serialPort.Read(buf, 0, n);//读取缓冲数据
//依次的拼接出16进制字符串
this.Invoke((EventHandler)(delegate
{
foreach (byte b in buf)
{
builder.Append(b.ToString("X2") + " ");
}
string hexstring = builder.ToString();
int i = Int32.Parse(hexstring, System.Globalization.NumberStyles.HexNumber);
//this.richTextBox1.AppendText(builder.ToString());
this.richTextBox1.AppendText(i);
}));
}
中间把16进制字符串转成int型字符了应该是,然后怎么能变成10进制?另外如何存入sql数据库呢?存入的应该是10进制还是16进制的啊?求指点。
最佳答案
数值是没有必要分几进制的,它在内存中就是二进制保存的。只是为了方便人们查看,可以转为n进制的格式显示在文本框中进行显示的。
所以
1 buf 就不要转为字符串了,直接以二进制格式存入数据库。下次也是以二进制的形式取出(就是byte[])

2 richTextBox1 要显示二进制也好,16进制也好 根据实际需要决定。象你上面的例子,builder 中的内容直接插入到richTextBox1中就好了。
全部回答
把16进制字符串转10进制数字很简单 int i; i=Convert.ToInt32("0a", 16); i 就等于10 再看看别人怎么说的。
read()函数读到的数据是二进制的。也就是说buf数组里面的数据就是二进制的。string str=Enconding.编码格式.GetString(buf)就可以把buf按相应编码格式转成可识别字符,也就是我们认识的字符。如果二进制数据代表的是10进制数字,那么str里就是对应的10进制数字。还有你这个串口读数据有点问题,会丢失数据。就是可能发生有的数据还没到缓存,你已经读了的情况。最简单方法是在 int n=serialPor.BytesToRead;前加一个Thread.Sleep(毫秒数)来给缓存一个接收数据的时间。多少毫秒你根据你给串口设置的波特率来设置。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
今年考研数学55分,我报的B区学校,有希望过
穿汉服搭配什么鞋子好
手机能备份软件吗?从哪里备份,怎么备份?
sd卡上的GHOST系统盘要怎么复制到另外一个SD
红豆薏米伏苓功枸杞一起煮有什么功效
为什么csdn开博后三天内不能发表文章?感到很
什么茶叶有点淡淡的苦涩???
为什么我的电脑下面的蓝条不见了
单选题两种元素之间以共用电子对形成AB2型化
西陵区红豆居家(宜昌CBD购物广场店)这个地址
《白眉大侠》里房书安的扮演者叫什么
各色各样是什么意思
有0、2、8三张数字卡片,组成一个最大三位数
电脑位数是从哪里看出来的
鲤鱼炖土豆怎么做好吃,鲤鱼炖土豆的家常做法
推荐资讯
影子是怎样形成的?
某同学在做“研究海波熔化”的实验.(1)他
我都不怎么认识他老公,她老婆就误会我勾引他
南市房管站地址在哪?我要去那里办事
具有梅花的素洁精神的人有谁?
汽车行驶一会儿,车窗的玻璃上出现了水雾,这
西双版纳傣族自治州安全生产监督管理局办公地
火车站邮东西,怎么查
8NH3 +3Cl2 ==6NH4Cl+N2的反应中,若有8mol的
大葱腌制方法
所有正面和负面情绪感觉有哪些?人人都会经历
怎么上网查外地电费?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?