在之前用msp430单片机做东西的时候,有时候会结合网页来进行上位机的显示,而从串口中读取数据就显得很重要,一开始做知识入门级,只会用C语言程序+js+ActiveX的方式来读取数据和控制单片机。
首先是C语言程序读取串口,由于之前已经写过,不再写了,送上读串口和写串口链接。
其次就是利用IE浏览器的ActiveX控件从网页端的js函数从C语言写入的文件中读取数据或是将数据写入文件。
js读取文件内容
function txtread()
{
var fso=new ActiveXObject("Scripting.FileSystemObject");
// 打开文件
var ts = fso.OpenTextFile("test\\readdata.txt", 1); //1表示只读
//遍历读取
while (!ts.AtEndOfStream)
{
s = ts.Readline();
var a = document.getElementById('duqu');
a.value = s;
}
ts.Close();
}
js将一个二进制数转化成十六进制并写入文件(这种操作就可以用来控制单片机外接的例如LED这样的设备)
function txtsave()
{
var oFso,oFile,sFile,sContent, x, y, z;
sFile = "test\\orderdata.txt";
var a = document.getElementById('cunqu').value;
//var ch = a;
x = parseInt(a,2);
y = x.toString(16);//2进制->16进制
var ch = a.tostring();
oFso = new ActiveXObject("Scripting.FileSystemObject");
oFile = oFso.OpenTextFile(sFile,2,true); //写方式打开
oFile.WriteLine(y);
oFile.Close();
}
上述是在物联网实验方面经常用到的一些简单函数,下面就是在普通场景下js对文件的操作。
用js创建文件
var fso, f1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
js创建并且写入数据
function CreateFile()
{
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.CreateTextFile("c:\\testfile.txt", true);
// 写一行,并且带有新行字符。
tf.WriteLine("Testing 1, 2, 3.") ;
// 向文件写三个新行字符。
tf.WriteBlankLines(3) ;
// 写一行。
tf.Write ("This is a test.");
tf.Close();
}
js读取数据
function ReadFiles()
{
var fso, f1, ts, s;
var ForReading = 1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
// 写一行。
// Response.Write("Writing file <br>");
f1.WriteLine("Hello World");
f1.WriteBlankLines(1);
f1.Close();
// 读取文件的内容。
// Response.Write("Reading file <br>");
ts = fso.OpenTextFile("c:\\testfile.txt", ForReading);
s = ts.ReadLine();
// Response.Write("File contents = '" + s + "'");
alert(s);
ts.Close();
}
移动复制或是删除文件
移动文件File.Move 或 FileSystemObject.MoveFile
复制文件File.Copy 或 FileSystemObject.CopyFile
删除文件File.Delete 或 FileSystemObject.DeleteFile
function ManipFiles()
{
var fso, f1, f2, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
Response.Write("Writing file <br>"); // 写一行。
f1.Write("This is a test.");
f1.Close(); Response.Write("Moving file to c:\\tmp <br>");//关闭文件
f2 = fso.GetFile("c:\\testfile.txt");//获取C盘根目录下的testfile文件
// 把文件移动到 \tmp 目录。
f2.Move ("c:\\tmp\\testfile.txt"); Response.Write("Copying file to c:\\temp <br>"); // 把文件复制到 \temp 目录。
f2.Copy ("c:\\temp\\testfile.txt"); Response.Write("Deleting files <br>");
f2 = fso.GetFile("c:\\tmp\\testfile.txt"); f3 = fso.GetFile("c:\\temp\\testfile.txt");
//删除文件。
f2.Delete(); f3.Delete(); Response.Write("All done!");
}
其他几种操作
1.readAsArrayBuffer(file):将文件读取为ArrayBuffer。
2.readAsBinaryString(file):将文件读取为二进制字符串
3.readAsDataURL(file):将文件读取为Data URL
4.readAsText(file, [encoding]):将文件读取为文本,encoding缺省值为'UTF-8'
更多的操作以后还会再整理总结。