·通讯格式
显示屏采用标准RS-232通讯接口,串行通讯格式
为“2400,8,N,1”。
显示屏显示一行24点阵6个汉字或12个数字信息。·信息格式:
11H + 显示信息 + 01H-------------------------------------------------- 11H ---- 表示地址码;
1号屏:11H,2号屏:22H,3号屏:33H 显示信息 ---- 使用汉字内码,共12个字节,
个数不足用空格填充; 01H ---- 表示信息结束码;
1号屏:01H,2号屏:02H,3号屏:03H请问:
“信息格式”中通过com1口向显示屏传数据,怎么用Delphi语言写出来?(只列出关键的两三条语句即可),感激不尽.
11H + 显示信息 + 01H 为1号显示屏的格式,2号屏、3号屏相似,所以只写出一个即可了,但我不知代码怎么写?
显示屏采用标准RS-232通讯接口,串行通讯格式
为“2400,8,N,1”。
显示屏显示一行24点阵6个汉字或12个数字信息。·信息格式:
11H + 显示信息 + 01H-------------------------------------------------- 11H ---- 表示地址码;
1号屏:11H,2号屏:22H,3号屏:33H 显示信息 ---- 使用汉字内码,共12个字节,
个数不足用空格填充; 01H ---- 表示信息结束码;
1号屏:01H,2号屏:02H,3号屏:03H请问:
“信息格式”中通过com1口向显示屏传数据,怎么用Delphi语言写出来?(只列出关键的两三条语句即可),感激不尽.
11H + 显示信息 + 01H 为1号显示屏的格式,2号屏、3号屏相似,所以只写出一个即可了,但我不知代码怎么写?
SendStr:=chr($11)+str+chr($01);
comm1.WriteCommData(pchar(SendStr),length(SendStr));
但显示屏还是收不到,你给帮忙看一下,什么地方写的不对。
var
SendStr,str:string;
i:integer;
begin
str:=edit1.Text;
for i:=0 to 11-length(str) do
begin
str:=str+' ';
end;
if ComboBox3.Text='一号' then
SendStr:=chr($11)+str+chr($01)
else if ComboBox3.Text='二号' then
SendStr:=chr($22)+str+chr($02)
else if ComboBox3.Text='三号' then
SendStr:=chr($33)+str+chr($03);
if comm1.WriteCommData(pchar(SendStr),length(SendStr)) then
showmessage(SendStr+inttostr(length(SendStr)))
else
showmessage('发送失败');
end;请问“信息格式”中的首尾控制字段是十六进制的,这条语句怎么写呢?也就是说如何传送十六进制的数给显示屏?
汉字内码我也不知如何处理,多谢
这个格式中首尾控制字段,是十六进制的,显示信息为汉字内码.这个格式怎么去写呢?
能给出大致的思路吗?(非得建立一个数组吗?难道将汉字也存入数组中吗?)我已经装上spcomm控件了,要怎么解决呢?多谢
s:显示信息(length=16)
b:array of [1..12]byte
for i:=1 to 12 do
begin
b[i]:=ord(s[i]);
end;
用头、尾再加上这十二个字节,发送给显示屏就好了
也不知道对不对
var
SendStr,str:string;
i:integer;
begin
str:=edit1.Text;
for i:=0 to 11-length(str) do
begin
str:=str+' ';
end;
if ComboBox3.Text='一号' then
SendStr:=chr($11)+str+chr($01)
else if ComboBox3.Text='二号' then
SendStr:=chr($22)+str+chr($02)
else if ComboBox3.Text='三号' then
SendStr:=chr($33)+str+chr($03);
if comm1.WriteCommData(pchar(SendStr),length(SendStr)) then
showmessage(SendStr+inttostr(length(SendStr)))
else
showmessage('发送失败');
end;请问“信息格式”中的首尾控制字段是十六进制的,这条语句怎么写呢?也就是说如何传送十六进制的数给显示屏?
注明:也就是上述代码中传送数据时按"信息格式"所写的语句如何去写,就只两条:
SendStr:=chr($33)+str+chr($03);
showmessage(SendStr+inttostr(length(SendStr)))___________
请问上述代码哪里出错了呢?依据"信息格式"的代码要如何去写呢?(我用的是SPCOMM控件)
I: Integer;
s:string;
b:array [0..13] of byte;
begin
s:='显示测试 '; //补到12个
b[0]:=$11;
for I := 1 to 12 do // Iterate
begin
b[i+1]:=ord(s[i]);
end; // for
b[13]:=1;
spcomm.WriteCommData(@b,14);
end;我这里没装SPCOMM,估计代码问题应该不算太大(难说 :) )
关于半角、数字、英文字母等内容你自己去完善吧,应该是可以的
你给的代码运行没问题(我以前写的代码也能运行),可就是传送不到显示屏上,这是不是还需要专门的控制呢?(如告诉显示屏如何去接收数据呢?)
11H + 显示信息 + 01H-------------------------------------------------- 11H ---- 表示地址码;
1号屏:11H,2号屏:22H,3号屏:33H 显示信息 ---- 使用汉字内码,共12个字节,
个数不足用空格填充; 01H ---- 表示信息结束码;
1号屏:01H,2号屏:02H,3号屏:03H没有什么协议,只是通过计算机的com口传送数据给显示屏就行了,发送时的"信息格式"为以上所列出的,但不知如何去写这条语句?多谢!
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <io.h>
#include <bios.h>
#define COM1 0
#define COM2 1
#define COM3 2
#define COM4 3
#define SETTINGS ( 0xa0 | 0x00 | 0x00 | 0x03)
int main(int argc,char * argv[])
{
int status,i,j;
int c=0,ph=1;
if(argc==3)
{
c=atoi(argv[1]);
ph=atoi(argv[2]);
}
bioscom(0,SETTINGS,c);
status=bioscom(1,0x10+ph,c);
if(0x8000&status)
{
printf("send no succeed!");
return(1);
}
for(j=0;j<12;j++)
{
status=bioscom(1,0x30+j,c);
}
status=bioscom(1,ph,c);
for(i=1;i<=3;i++)
{
sound(300+i*50);
delay(150);
}
nosound();
return(0);
}
"显示格式"中
11H ---- 表示地址码;
1号屏:11H,2号屏:22H,3号屏:33H应改为:
1号屏:11H,2号屏:12H,3号屏:13H多谢各位朋友