下位机数据接收十六进制写入文件

项目:实现can总线传感器  QN1161 测试上位机

要求:需要将接收的到数据写入到文件中

格式: 时间 + CAN ID + 数据; 如: 2015/4/22 11:45:18 0xF5F4EB18 03 EC 0D 0B 00 02 00 00

一、写入文件(追加方式)

/// <summary>
/// 写入文件
/// </summary>
public void WriteFile(string strInfo)
{
    FileStream fs = new FileStream("D:\\data.txt", FileMode.Append);
    //获得字节数组
    byte[] data = System.Text.Encoding.Default.GetBytes(strInfo);
    //开始写入
    fs.Write(data, 0, data.Length);
    //清空缓冲区、关闭流
    fs.Flush();
    fs.Close();
}

二、CAN ID地址转换

/// <summary>
/// CAN id 地址转 HEX String
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
public static string _byteToHexStr(byte[] bytes)
{
      string returnStr = "";
      if (bytes != null)
      {
            for (int i = 0; i < bytes.Length; i++)
            {
                returnStr += bytes[i].ToString("X2");
            }
       }
       return returnStr;
} 

三、数据转 HEX string

/// <summary>
/// 字节数组转16进制字符串
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
public static string byteToHexStr(byte[] bytes)
{
    string returnStr = "";
    if (bytes != null)
    {
        for (int i = 0; i < bytes.Length; i++)
        {
           returnStr += bytes[i].ToString("X2") + " ";
        }
    }
    return returnStr;
}

四、使用

byte[] bpara  =System.BitConverter.GetBytes(tmp.devID);
string devIDstring = "0x" + _byteToHexStr(bpara);
WriteFile(DateTime.Now.ToString() + " " + devIDstring + " " + byteToHexStr(tmp.recvData) + "\r\n");  //写入文件

有点乱的,可以整理整理,还不错,希望对你有帮助,

耶稣爱你!!

时间: 2024-08-04 04:15:27

下位机数据接收十六进制写入文件的相关文章

windows获取本机MAC地址并写入文件的bat

windows获取本机MAC地址并写入文件的bat MAC(Media Access Control)地址,或称为 MAC地址.硬件地址,用来定义网络设备的位置. bat代码例如以下: @echo off echo GET MAC ADDRESS echo PLEASE WAIT... getmac /v > mac.txt echo GET MAC ADDRESS SUCCESS pause exit 查看mac.txt,获取成功 连接名 网络适配器 物理地址 传输名称 ===========

C语言中链表任意位置怎么插入数据?然后写入文件中?

链表插入示意图:(图是个人所画)因为链表指针指来指去,难以理解,所以辅助画图更加方便. 定义的结构体: struct student { char ID[11]; //学生学号 char name[20]; //学生姓名 struct student *next; //next 指针 指向 struct student 类型的变量 }stu; 看我写的代码,代码中有详细解释: /*************** 函数功能: 插入出勤学生 返回:指向链表表头的指针 /***************/

unity3D和串口之间的通信,接收下位机数据和发送指令

using UnityEngine;using System.Collections;using System.IO.Ports;using System;using System.Collections.Generic;using System.Threading; public class PortControl : MonoBehaviour { public GUIText gui; public string portName = "COM2"; public int bau

R语言merge数据框并写入文件

text1 <- read.csv("file1.txt", header = T) text2 <- read.delim("file2.txt", heade=T) 两个文件有共同的列名 Name 如果没有就用 colnames(text1) <- c("Name", "OtherCol") 重命名 data_1 <- merge(text1, text2, by = "Name"

串口操作包括 java上位机 嵌入式c下位机

一环境 1.1 Keil uVision4 http://pan.baidu.com/s/1o6A331w 1.2 STC http://pan.baidu.com/s/1jGpCUTC 1.3 Myeclipse 8.5 http://pan.baidu.com/s/1jGABEaM 1.4 需导入的jar包RXTX http://pan.baidu.com/s/1ntwsvRr 首先把rxtxParallel.dll和rxtxSerial.dll复制到jdk目录的bin目录下面 然后把RXT

iOS开发小技巧--边接受数据边写入文件的两种方法

一.NSFileHanle 使用注意点:在往文件写入数据时,必须创建一个空的文件 指定文件写入的方式 -- 覆盖还是追加 最后记得关闭 <1>代码是在大文件传输的练习中截取的.写入数据之前,创建空的文件,初始化NSFileHandle类 <2>设置文件的写入方式,(不设置写入方式,默认的是覆盖写入数据)并且将接收到的数据写入空的文件 <3>最后务必把操作文件的对象关闭 二.NSOutPutStream 使用注意:使用这个类操作文件不用提前创建空的文件,但是要记得将str

下位机单片机c语言发送数据到串口,上位机pc机java语言获取端口数据

环境: Windows7 64b,jdk64b,myeclipse8.5,rxtx开发包,STC,keil,格西烽火,51单片机,rs232USB转串口线. 下位机c代码 #include <reg51.h> #include <string.h> #define INBUF_LEN 7   //数据长度 unsigned char inbuf1[INBUF_LEN]; unsigned char checksum,count3,count=0; bit           rea

数据存储-自定义Json串写入文件与XML格式读取数据

数据存储总的来说有三种方式 1>,数据库 2>,文件 3>,网络 在这里我介绍的是Json格式与XML格式的文件存储 先说说常用的文件存储数据的格式 1>,Json格式 2>,XML格式 这俩种格式我觉得区别的话应该是Json适合存储小数据,XML适合存储大数据 在cocos2d-x中,如果我们要用Json首先我们要先导入一个Json库:libjson demo如下: 要添加libjson头文件 创建Json格式的数据: 这里用JSONNode,定义一个父节点n,再定义一个节

已知s.txt文件中有一个这样的字符串 请编写程序读取数据内容,把数据排序后写入 ss.txt文件

package cn.idcast5; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Arrays; /* * 需求:已知s.txt文件中有一个这样