VS.net 2005 中的javascript脚本byte数组的获取,怎么去不着啊?高手请指点!

lovcal 2006-07-04 11:02:22
我的strInput赋值如下:
var strInput;
strInput = MSComm1.Input; //mscomm1是MSCOMM控件,读取串口的数据

我使用单步调试模式,发现如下:
-------------------------------------------
变量 值 类型
- strInput ᆰ茁織㛋 数组 Byte
(0) 170 Byte
(1) 255 Byte
(2) 1 Byte
(3) 131 Byte
(4) 84 Byte
(5) 126 Byte
(6) 203 Byte
(7) 54 Byte
---------------------------------------------

使用alert(strInput),得出的结果为“ᆰ茁織㛋”

请问我怎么获取这个数组元素的值,也就是说我想用循环取出每个元素,是个二进制数,然后转换成16进制数?

事实上转换完之后应该是 aa ff 01 83 54 7e cb 36
可是我使用strInput(0)来取值时却一直提示“缺少对象!!??”

我给(0)添加监视,发现结果如下:
----------------------------------------------
名称 值 类型
strInput(0) 缺少对象 错误
----------------------------------------------

这个strInput到底是什么类型?这是为什么呢?


...全文
410 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
vagerent 2006-09-25
  • 打赏
  • 举报
回复
另外搞一个页面,用二进制流作为参数传过去,在另一边接收并且转换成字符串就ok了.
lovcal 2006-07-14
  • 打赏
  • 举报
回复
不行啊……应该要客户端处理吧,服务器获取不到东西
lovcal 2006-07-14
  • 打赏
  • 举报
回复
var webFileUrl = "Default2.aspx?get="+strInput;
------我怎么将MSComm1.Input作为一个对象传进去?
lovcal 2006-07-14
  • 打赏
  • 举报
回复
非常感谢楼上的

再问一下,上面的是服务器端的函数?
我这么调用:
strInput=MSComm1.Input;
var webFileUrl = "Default2.aspx?get="+strInput;
  var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
  xmlHttp.open("POST", webFileUrl, false);
xmlHttp.send("");
alert(xmlHttp.responseText);
window.alert (strInput);
函数就在Default2.aspx中
但是调试时提示bytIn =(byte[])objIn; 这句不能将system.string强制转换为byte[]
我的调用方法是不是错了?
huangguangdou 2006-07-11
  • 打赏
  • 举报
回复
相关的回复通过短信息给你发过去了。


//将 返回的数据 转换为 字符串 格式
private string changeReceiveCommadToStr(object objReceveCommand)
{
string strIn="" ;
byte[] bytIn;
object objIn;
int i;

objIn=objReceveCommand; //这里注意axMSComm1.Input返回的是一个object的
//this.axMSComm1.InBufferCount=0;

bytIn =(byte[])objIn; //类型,所以必须使用显式的类型转换,这点和VB不同
for (i=0;i<=(bytIn.Length-1);i++ )
{
//strIn +="\r\n"+ " "+bytIn[i].ToString("X"); //转换为16进制显示
string tempBytInt=bytIn[i].ToString("X");//转换为16进制显示
if(tempBytInt.Length==1)//如果长度等于 1 ,前面补 0
{
tempBytInt="0"+tempBytInt;
}
strIn +=tempBytInt; //合并命令字符串
}
//MessageBox.Show(strIn);
//this.label3.Text+=strIn;
return strIn;

//MessageBox.Show("最终收到字符串的长度:"+strIn.Length.ToString());
}


主要是 要知道 返回的类型是 object 型的。
然后进行相应的处理(类型转换、校验)
lovcal 2006-07-06
  • 打赏
  • 举报
回复
这些都不行,提示对象为空或不存在,很是郁闷
lovcal 2006-07-05
  • 打赏
  • 举报
回复
就是将MSCOMM当ActivX控件引用阿

有哪位高手知道javascript/vbscript中怎么处理么?还有怎么实现二进制转十六进制数?
oldcsdn 2006-07-05
  • 打赏
  • 举报
回复
1.没用过, 将strInput toString()试试

2.二进制转十六进制
var str="170";
alert((parseInt(str)).toString(16));
dong79 2006-07-05
  • 打赏
  • 举报
回复
请问楼主,是怎样在javascript调用mscomm控件的
lovcal 2006-07-05
  • 打赏
  • 举报
回复
strInput 是个对象类型,好象要通过strInput 的什么属性才能把值取出来。
-----------

无论我strInput.* 都提示空对象和无效

听有人说javascript中只认识字节数组,但不能操作???

是不是跟我用二进制读取有关???
lovcal 2006-07-05
  • 打赏
  • 举报
回复
我在VS中命名看到strInput是个byte数组,为何就是不能取strInput(0)的值?
就连我在定义一个数组,做数组赋值,都不行,提示类型不匹配,狂郁闷!

没有人遇到过类似的问题么?
hanguoji84 2006-07-05
  • 打赏
  • 举报
回复
guodawu 2006-07-05
  • 打赏
  • 举报
回复
strInput 是个对象类型,好象要通过strInput 的什么属性才能把值取出来。
guodawu 2006-07-05
  • 打赏
  • 举报
回复
Study!
lovcal 2006-07-05
  • 打赏
  • 举报
回复
有人么?
myminimouse 2006-07-05
  • 打赏
  • 举报
回复
mark
artak 2006-07-04
  • 打赏
  • 举报
回复
mark
lovcal 2006-07-04
  • 打赏
  • 举报
回复
补充:我的mscomm使用二进制方式读取数据的,也就是说strInput保存的是二进制数??

javascript中能处理二进制数转换为十六进制数么?

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧