110,566
社区成员
发帖
与我相关
我的任务
分享
class Program
{
static void Main(string[] args)
{
//主程序,从串口定时读取数据,保存到data这个byte[]
//byte[] data = new byte[xx];//xx是个变化的量,最大会超过256,不到512
//为了方便测试,不管读串口的程序,用简单的3个数组来测试后续程序
byte[] data = new byte[3];
data[0]=11;
data[1]=21;
data[2] = 31;
object O_data = Bytes2Object(data);
Thread t = new Thread(new ParameterizedThreadStart(B));
//从网上查了下,线程传递一个参数,必须是object类型,然后有百度了一些byte[]转object函数
t.Start(O_data);
Console.Read();
}
private static void B(object obj)
{
Console.WriteLine("Method {0}!", obj.ToString());
}
//网上直接贴来的函数,看不懂实现机制,想直接用下byte[]转object,用上面的3个数组测试,报下面 的错误
/// <summary>
/// 将一个序列化后的byte[]数组还原
/// </summary>
/// <param name="Bytes"></param>
/// <returns></returns>
public static object Bytes2Object(byte[] buff)
{
object obj;
using (MemoryStream ms = new MemoryStream(buff))
{
IFormatter iFormatter = new BinaryFormatter();
obj = iFormatter.Deserialize(ms);//在分析完成之前遇到流结尾,这里出错??????
}
return obj;
}
/// <summary>
/// 将一个object对象序列化,返回一个byte[]
/// </summary>
/// <param name="obj">能序列化的对象</param>
/// <returns></returns>
public static byte[] ObjectToBytes(object obj)
{
using (MemoryStream ms = new MemoryStream())
{
IFormatter formatter = new BinaryFormatter(); formatter.Serialize(ms, obj); return ms.GetBuffer();
}
}
}
private static void B(object obj)
{
byte[] data = (byte[])obj;
Console.WriteLine("Method {0}!", obj.ToString());
}