用的是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进制的啊?求指点。
直接存入数据库,数据库里显示的是什么数据啊?是二进制的?那怎么看呢?我还得做个显示收到的数据的部分。。。
追答数据列就设置为二进制数组 ,比如 sql server 中的binary、varbinary或image。
数据库中的数据不一定非要能显示的。它只要管存数据就好了。怎么显示是界面上的事。
从数据库中读取出为二进制数组(byte[]),可以转为16进制的字符串显示,也可以转为二进制的字符串显示,或是界面上有一个选项按钮,由使用人员来选择什么格式显示。再比如这个二进制数组是一个图像文件,那么使用Image载入,然后显示在界面上。
可以理解为不用转成16进制显示,就用您的那个命令直接显示收到的数据就行么?那后边存入数据库就直接把str内数据存入么?数据库内是显示什么样的数据呢?
c#怎样将从串口读取的数据传入数据库
float nCurtp= getCurTP(); \/\/从串口取缓冲数据(自己写)1 再建立数据库联接实例:2 string intsql=String.Format( "insert into log(SETTP,CURTP) values({0},{1})" ,nSettp.tostring(),nCurtp.tostring());3 执行 查询. 调用 execute(sql)有返回即可....
C#串口通讯接收数据为16进制如下
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.IO.Ports;namespace PortTestAAA { class Program { static void Main(string[] args){ PortOperator myTestPort = new PortOperator();myTestPort.PortName = "COM1";myTestP...
如何用“C#”对串口发送16进制数?
接下来是准备要发送的16进制数据。在C#中,16进制数通常以字符串的形式表示,如"0xA5"或"A5"。为了通过串口发送这些数据,需要先将它们转换为字节流。这可以通过将每两个16进制字符转换为一个字节来实现。例如,字符串"A5"将被转换为字节0xA5。在转换过程中,可以使用C#的`Convert.ToByte`方法,但...
如何使用C# 进行串口的读写,请详细点
一、C#串口操作之读取串口数据:try { axMSComm2.CommPort = 1i; axMSComm2.InputMode = MSCommLib.InputModeConstants.comInputModeBinary; \/\/用于设置或返回传输数据的类型, \/\/此例程是通过Input属性以二进制方式检取回数据 axMSComm2.PortOpen = true; \/\/打开端口 axMSComm2.InBufferCount = 0; \/\/...
C#里如何对位数很长的数字(已处理为字符串)转化为16进制
一般的解决办法是自己写一个类型来储存这种超大数,当成 string 类型来处理,并自己写算法来对应加减乘除这些。暂时只能想到一个效率很低的思路,这么大的数要直接转成16进制的话算法是很麻烦的,建议先转成2进制,用短除法(除法的本质是多次减法,当然如果题主算法好可以用蒙哥马利算法来直接做除法。当...
如何用“C#”对串口发送16进制数?
1. 16进制数转换为字节:16进制数是一种数值表示方法,它使用16个不同的符号来表示数值,包括0-9来表示值0到9,以及A-F来表示值10到15。在C#中,可以使用`Convert.ToByte`方法将表示16进制数的字符串转换为对应的字节。例如,`Convert.ToByte`会将16进制数"0F"转换为字节15。2. 打开串口:在...
c#中如何对串口发送16进制数据,如何接收16进制数据
接收的如果是按字节接收(ReadByte),那么接收回来的数直接就可以用10进制表示,如果需要显示,可以直接在变量之后加.ToString();不明白可直接加我HI --- 之前的回答 byte[] t = new byte[2];t[0] = 0xAA;t[1] = 0xBB;串口对象.Write(t,0,2);其中3个参数顺序为:byte型数组,偏移(从...
c#中怎么把socket接收的数据存入数据库
并将接收到数据放到byts数组中。它的返回值为一个整型,是指接收数据的数量 if(length>0){ string msg = System.Text.Encoding.UTF8.GetString(byts, 0, r);} OK,到这步,你应该就会了吧,此时拿到的msg就是接收到回来的字符串了。然后启动数据库连接,将msg写入对应的表就可以了。
C# 串口十六进制发送
把通信协议以字符串的格式发送数据,接收到的数据为十六进制
C#串口通信接收16进制字符串截取问题!!!
string trim = Regex.Replace( text, @"\\s", "" ); \/\/先正则删空格 trim.SubString(12,8); \/\/然后截取就好了