如何向串口发送组合键指令

Andrew_wx 2013-08-03 12:22:53
串口向下位机如何发送组合键指令,以下代码是发送文本指令的方法,现在有个指令要向下位机发送一个 Ctrl + u 的组合键指令,请高手指点下,该如何操作,谢谢!
 private void TestCom_DataSend(string cmd) //发送串口指令
{
if (ComDevice.IsOpen == true)
{
byte[] SendBytes = null;
string SendData = cmd;//指令
//16进制发送
try
{
//剔除所有空格
SendData = SendData.Replace(" ", "");
if (SendData.Length % 2 == 1)
{//奇数个字符
SendData = SendData.Remove(SendData.Length - 1, 1);//去除末位字符
}
List<string> SendDataList = new List<string>();
for (int i = 0; i < SendData.Length; i = i + 2)
{
SendDataList.Add(SendData.Substring(i, 2));
}
SendBytes = new byte[SendDataList.Count];
for (int j = 0; j < SendBytes.Length; j++)
{
SendBytes[j] = (byte)(Convert.ToInt32(SendDataList[j], 16));
}
}
catch
{
MessageBox.Show("请输入正确的16进制数据!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
ComDevice.Write(SendBytes, 0, SendBytes.Length);//发送数据
}
else
{
MessageBox.Show("串口未打开,请打开串口后重试", "错误");
Time_Read.Stop();
}
}
...全文
547 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
edaplayer 2016-04-01
  • 打赏
  • 举报
回复
需要发送转义字符,百度 escape 控制字符 转义字符等关键字
sui_801122 2015-04-01
  • 打赏
  • 举报
回复
楼主给说一下如何发送组合键的 多谢
Andrew_wx 2013-08-03
  • 打赏
  • 举报
回复
已经通过串口监控软件,读取到了16进制数据,谢谢!
Andrew_wx 2013-08-03
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
什么叫做“组合键指令”? 在pc机上识别到字母u被按下时,可以同时识别Ctrl按键是否按下,那是有一定的驱动支持的。 你不能想当然地发明什么“组合键指令”这种奇怪的概念。你应该稍微深入一点去了解一些,然后再来设计。 或许你更应该先理解你的“下位机”能够支持什么功能,再来重新考虑设计。
一个产品在测试的时候需要发送一个Ctrl + u 指令进入工程模式,客户提供的程序是可以的,不过我们现在想改成自己的程序来测试,这样可以减少一些步骤,一直找不到方法,所以来论坛请教高手
  • 打赏
  • 举报
回复
什么叫做“组合键指令”? 在pc机上识别到字母u被按下时,可以同时识别Ctrl按键是否按下,那是有一定的驱动支持的。 你不能想当然地发明什么“组合键指令”这种奇怪的概念。你应该稍微深入一点去了解一些,然后再来设计。 或许你更应该先理解你的“下位机”能够支持什么功能,再来重新考虑设计。
Andrew_wx 2013-08-03
  • 打赏
  • 举报
回复
高手给个意思啊
Andrew_wx 2013-08-03
  • 打赏
  • 举报
回复
引用 1 楼 lizhi3186575 的回复:
可以参考下这里:http://www.cnblogs.com/binfire/archive/2011/10/08/2201973.html
谢谢 基本的发送文本指令我可以实现 ,现在的问题是要发送组合键指令,这个组合键的指令不知怎么去编辑
人生导师 2013-08-03
  • 打赏
  • 举报
回复
可以参考下这里:http://www.cnblogs.com/binfire/archive/2011/10/08/2201973.html
文件格式为azw3,文字版本,可以用kindle阅读,PC端可以用calibre,可以转成epub所有手机阅读软件都支持,对手机的排版支持还不错. 内容目录 第1天 文本操作指令 1.1 ar 指令:创建、修改或从档案文件中提取文件 1.2 aspell指令:检查文件的错误 1.3 bunzip2指令:解压缩.bz2类型的文件 1.4 bye指令:中断FTP连接 1.5 bzip2指令:压缩成.bz2类型的文件 1.6 bzip2recover指令:损坏.bz2文件的修复 1.7 cat指令:连接并输出文件内容 1.8 chattr指令:改变文件的属性 1.9 chgrp 指令:改变文件或者目录所属的用户组 1.10 chmod指令:改变文件或者目录的权限 1.11 chown指令:改变文件的拥有者或用户组 1.12 cksum指令:文件的CRC校验 1.13 cmp指令:比较文件差异 1.14 cp指令:复制 1.15 cpio指令:备份文件 1.16 csplit指令:分割文件 1.17 cut指令:剪切文件 1.18 diff指令:生成差异信息 1.19 diffstat指令:diff结果的统计信息 1.20 dump指令:文件系统备份 1.21 file指令:辨识文件类型 1.22 find指令:查找目录或者文件 1.23 fsck指令:检查并尝试修改文件系统错误 1.24 fsck.ext2指令:检查ext2文件系统并尝试修改错误 1.25 fsck.ext3指令:检查ext3文件系统并尝试修改错误 1.26 fsck.minix指令:检查文件系统并尝试修复错误 1.27 ftp指令:文件传输协议 1.28 ftpcount指令:显示ftp登录用户数 1.29 ftpshut指令:定时关闭ftp服务器 1.30 ftpwho指令:显示登录ftp用户信息 1.31 gunzip指令:解压缩文件 1.32 gzexe指令:压缩可执行文件 1.33 gzip指令:压缩文件 1.34 indent指令:调整C原始代码文件的格式 1.35 less指令:一次显示一页文本 1.36 lha指令:压缩或解压缩文件 1.37 ln指令:链接文件或目录 1.38 locate指令:查找文件 1.39 lpd指令:打印管理程序 1.40 lpq 指令:查看打印机列表中未完成的工作 1.41 lpr指令:输入打印文件 1.42 lprm 指令:将任务从打印机队列中移除 1.43 lsattr指令:显示文件属性 1.44 mattrib指令:变更或显示MS-DOS文件的属性 1.45 mc指令:菜单式文件管理程序 1.46 mcopy指令:复制MS-DOS文件 1.47 mdel指令:删除MS-DOS文件 1.48 mdir指令:显示MS-DOS目录 1.49 mkdir指令:建立目录 1.50 mktemp指令:建立暂存文件 1.51 more指令:显示文件信息 1.52 mmove指令:移动或重命名MS-DOS文件 1.53 mread指令:复制MS-DOS文件 1.54 mren指令:移动或重命名MS-DOS文件 1.55 mshowfat指令:显示MS-DOS文件的记录 1.56 mtools 指令:显示 mtools 支持的指令 1.57 mtoolstest 指令:测试同时显示mtools的相关设置 1.58 mv 指令:移动或更名现有的文件或目录 1.59 ncftp指令:文件传输 1.60 ncftpget指令:下载文件 1.61 ncftpput指令:上传文件 1.62 od指令:输出文件内容 1.63 paste指令:合并文件的列 1.64 patch指令:修补文件 1.65 rcp指令:远程复制文件或目录 1.66 rhmask指令:产生加密文件 1.67 rm指令:删除文件或目录 1.68 tac指令:反序输出文件 1.69 tar指令:打包同时压缩/解压缩文件 1.70 tee 指令:从标准输入读取数据到标准输出,同时保存为文件 1.71 tftp指令:传输文件 1.72 tmpwatch指令:删除临时文件 1.73 touch指令:更改文件/目录时间 1.74 umask指令:指定在建立文件时权限掩码 1.75 umount指令:卸除文件系统 1.76 unarj指令:解压缩文件 1.77 uncompress指令:解压缩.z文件 1.78 unzip指令:解压缩.zip文件 1.79 uucico指令:.uucp文件传输 1.80 uucp指令:在系统之间传送文件 1.81 uupick指令:处理接收文件 1.82 uuto指令:文件传送到远端主机 1.83 whereis指令:查找文件 1.84 which指令:查找文件 1.85 zip指令:压缩文件 1.86 zipinfo指令:显示压缩文件的信息 第2天 文本编辑指令 2.1 col指令:过滤控制字符 2.2 colrm指令:删除指定的列 2.3 comm指令:比较排序文件 2.4 ed指令:文本编辑器 2.5 egrep指令:输出匹配某种模式的行 2.6 emacs指令:文本编辑器 2.7 ex指令:在Ex模式下启动vim文本编辑器 2.8 expr指令:简单计算器 2.9 fgrep指令:匹配字符串 2.10 fmt指令:编排文本文件 2.11 fold指令:限制文件列宽 2.12 grep指令:匹配搜索 2.13 ispell指令:拼字检查程序 2.14 jed指令:编辑文本文件 2.15 joe指令:编辑文本文件 2.16 join指令:连接两个指定的文件 2.17 look指令:单字查询 2.18 mtype指令:显示MS-DOS文件的内容 2.19 pico指令:编辑文本文件 2.20 rgrep指令:递归查找 2.21 sed指令:利用script命令处理文本文件 2.22 sort指令:将文本文件内容加以排序 2.23 spell指令:拼字检查程序 2.24 tr指令:转换文件中的字符 2.25 uniq指令:检查文件中重复出现的行 2.26 vi指令:文字编辑器 2.27 vim指令:增强型vi文件编辑器 2.28 wc指令:计算字数 第3天 磁盘操作指令 3.1 automount指令:为auto文件系统配置挂载点 3.2 badblocks指令:检查磁盘坏道 3.3 cd指令:切换目录 3.4 cfdisk指令:磁盘分区 3.5 dd指令:转换复制文件 3.6 df指令:磁盘信息 3.7 dirs指令:显示目录信息 3.8 du指令:显示目录或文件所占的磁盘空间 3.9 edquota 指令:编辑用户或用户组的quota 3.10 eject指令:退出抽取式设备 3.11 e2fsck指令:检查ext2文件系统 3.12 fdformat指令:软盘格式化 3.13 fdisk指令:Linux磁盘分区 3.14 fsck 指令:检查文件系统并修复分区错误 3.15 fsck.ext2指令:检查ext2文件系统 3.16 fsconf指令:设置文件系统相关功能 3.17 hdparm指令:显示和设定硬盘参数 3.18 lndir指令:连接目录内容 3.19 losetup指令:设置循环设备 3.20 ls指令:列出目录内容 3.21 mbadblocks 指令:检查 MS-DOS文件系统的磁盘是否有损坏的磁区 3.22 mcd指令:在MS-DOS文件系统中切换工作目录 3.23 mdeltree指令:删除MS-DOS 目录/文件 3.24 mdu指令:显示MS-DOS目录所占用的磁盘空间 3.25 mformat指令:对MS-DOS文件系统的磁盘进行格式化 3.26 mkbootdisk指令:建立目前系统的启动盘 3.27 mkdir指令:建立目录 3.28 mkdosfs指令:建立MS-DOS文件系统 3.29 mke2fs指令:建立ext2文件系统 3.30 mkfs指令:建立各种文件系统 3.31 mkfs.ext2指令:建立ext2文件系统 3.32 mkfs.msdos 指令:建立 MS-DOS文件系统 3.33 mkinitrd指令:建立要载入ramdisk的映像文件 3.34 mkisofts指令:建立iso 9660映像文件 3.35 mkswap指令:设置交换区 3.36 mlabel 指令:显示/设置 MS-DOS磁盘驱动器的标签名称 3.37 mmd 指令:在MS-DOS 文件系统中建立目录 3.38 mmount指令:挂载MS-DOS文件系统 3.39 mount指令:挂载文件系统 3.40 mpartition指令:建立/删除MS-DOS的分区 3.41 mrd指令:删除MS-DOS文件系统中的目录 3.42 pwd指令:显示工作目录 3.43 quota指令:显示磁盘已使用的空间与限制 3.44 quotacheck 指令:检查磁盘的使用空间与限制 3.45 quotaoff指令:关闭磁盘空间限制 3.46 quotaon指令:开启磁盘空间限制 3.47 repquota指令:检查磁盘空间限制的状态 3.48 restore指令:还原dump操作备份文件 3.49 rmdir指令:删除目录 3.50 sfdisk指令:硬盘分区工具程序 3.51 stat指令:显示inode内容 3.52 swapoff指令:关闭系统交换分区 3.53 swapon指令:启动系统交换分区 3.54 symlinks指令:维护符号链接的工具程序 3.55 symlinks 指令:维护符号链接的工具程序 3.56 tree指令:以树状图显示目录内容 3.57 umount指令:卸除文件系统 第4天 网络通信指令 4.1 apachectl指令:apache HTTP服务器控制接口 4.2 arp指令:地址转换协议 4.3 arping指令:ARP请求报文 4.4 arpwatch指令:监听ARP记录 4.5 arptables指令:管理系统的ARP表 4.6 cu指令:主机间通信 4.7 dip指令:IP拨号连接 4.8 dnsconf指令:设置DNS服务器组态 4.9 efax指令:收发传真 4.10 getty指令:设置终端配置 4.11 httpd指令:apache http服务器程序 4.12 ifconfig指令:显示或者配置网络设备 4.13 mesg指令:控制终端的写入 4.14 minicom指令:调制解调器通信程序 4.15 nc指令:设置路由器 4.16 netstat指令:显示网络状态 4.17 newaliases指令:重建别名数据库 4.18 pine指令:处理电子邮件和新闻组 4.19 ping指令:检测主机 4.20 ppp-off指令:关闭ppp连线 4.21 pppsetup指令:设置ppp连线 4.22 pppstats指令:显示ppp连线状态 4.23 samba指令:控制Samba服务端 4.24 sendmail指令:邮件服务器程序 4.25 setserial指令:设置或显示串口的相关信息 4.26 smbclient指令:可存取SMB/CIFS服务器的用户端程序 4.27 smbd指令:Samba服务端 4.28 ssh指令:加密的远程登录工具 4.29 statserial指令:samba服务器程序 4.30 talk指令:与其他用户交谈 4.31 tcpdump指令:倾倒网络传输数据 4.32 telnet指令:远程登录 4.33 testparm 指令:测试 Samba 配置文件 4.34 traceroute指令:显示数据包到主机间的路径 4.35 tty指令:显示标准输入设备名称 4.36 uucp 指令:将特定文件复制到另一个特定系统 4.37 uulog指令:显示uucp记录信息 4.38 uuname指令:显示uucp远端主机 4.39 uustat指令:显示uucp状态 4.40 uux指令:在远端的uucp主机上运行指令 4.41 wall指令发送信息 4.42 write指令:传送信息 4.43 ytalk指令:与其他用户交谈 第5天 系统管理指令 5.1 adduser指令:增加一个系统用户 5.2 arch指令:输出主机的体系结构 5.3 batch指令:执行批处理指令 5.4 bg指令:将程序放在后台执行 5.5 chfn指令:设置finger信息 5.6 chsh指令:改变登录系统时的shell 5.7 clear指令:清除屏幕信息 5.8 date指令:显示或设置系统时间 5.9 echo指令:字符串输出 5.10 exit指令:退出shell 5.11 finger指令:查找并显示用户信息 5.12 free指令:显示内存信息 5.13 fwhois指令:显示用户的信息 5.14 gitps指令:显示程序情况 5.15 groupadd指令:创建一个新群组 5.16 groupdel指令:删除一个群组 5.17 groupmod 指令:改变系统群组的属性 5.18 groups指令:查看用户属于哪个组 5.19 halt指令:关闭系统 5.20 help指令:显示shell内建指令的帮助信息 5.21 history指令:显示历史指令 5.22 id 指令:显示用户的ID 以及所属群组的ID 5.23 init指令:开关机设置 5.24 ipcs指令:显示进程间通信的信息 5.25 jobs指令:显示所有后台程序 5.26 kill指令:杀死执行中的进程 5.27 last指令:显示所有登录系统的用户相关信息 5.28 lastb 指令:显示登录系统失败的用户信息 5.29 login指令:登录系统 5.30 logname指令:显示登录账号 5.31 logout指令:退出系统 5.32 logrotate指令:管理log文件 5.33 man指令:帮助手册 5.34 nice指令:设置优先级 5.35 procinfo指令:显示系统状态 5.36 ps指令:报告程序状况 5.37 pstree指令:以树状图显示程序 5.38 reboot指令:重新启动 5.39 renice指令:调整优先级 5.40 rlogin指令:远端登录 5.41 rsh指令:远端登录的shell 5.42 rwho指令:查看系统用户 5.43 screen指令:多重视窗管理程序 5.44 shutdown指令:系统关机 5.45 skill指令:工作行程资讯与管理 5.46 sleep指令:休眠 5.47 su指令:变更用户身份 5.48 sudo指令:以其他身份来执行 5.49 suspend指令:暂停执行shell 5.50 swatch指令:系统监控程序 5.51 tload指令:显示系统负载 5.52 top指令:显示进程信息 5.53 uname指令:显示系统信息 5.54 useradd指令:建立用户账号 5.55 userconf指令:设置用户账号 5.56 userdel指令:删除用户账号 5.57 usermod指令:修改用户账号 5.58 vlock指令:锁定终端 5.59 w指令:显示登录系统的用户信息 5.60 who指令:显示系统用户信息 5.61 whoami指令:显示用户名 5.62 whois指令:查找用户/域名信息 第6天 系统设置指令 6.1 alias指令:设置指令的别名 6.2 apmd指令:高级电源管理 6.3 aumix指令:设置音效设备 6.4 bind指令:显示或者设置按键组合 6.5 chkconfig指令:设置系统的应用程序 6.6 chroot指令:改变根目录 6.7 clock指令:系统RTC时间设置 6.8 crontab指令:设置计时器 6.9 declare指令:声明 shell 变量 6.10 depmod指令:模块关系 6.11 dircolors指令:ls指令对应的显示颜色设置 6.12 dmesg指令:显示内核信息 6.13 enable指令:激活或关闭shell内建指令 6.14 eval指令:执行多个指令 6.15 export指令:设置或显示环境变量 6.16 fbset指令:设置帧缓冲区 6.17 grpconv指令:开启群组的投影密码 6.18 grpunconv 指令:关闭群组的投影密码 6.19 hwclock指令:显示与设定硬件时钟(rtc) 6.20 insmod指令:载入模块 6.21 kbdconfig指令:设置键盘类型 6.22 lilo指令:引导安装程序 6.23 liloconfig指令:设置程序的载入 6.24 lsmod 指令:显示Linux内核的模块信息 6.25 minfo指令:显示MS-DOS文件系统的各项参数 6.26 mkkickstart 指令:建立安装的组态文件 6.27 modinfo指令:显示内核信息 6.28 modprobe 指令:自动处理可载入模块 6.29 moouseconfig指令:设置鼠标相关参数 6.30 ntsysv指令:设置系统的各种服务 6.31 passwd指令:设置密码 6.32 pwconv指令:开启用户的投影密码 6.33 pwunconv 指令:关闭用户的投影密码 6.34 rdate 指令:显示其他主机的日期与时间 6.35 reset指令:设置终端机状态 6.36 resize指令:设置终端机视窗的大小 6.37 rmmod指令:删除模块 6.38 rpm指令:管理RPM包 6.39 set指令:设置shell 6.40 setconsole指令:设置系统终端 6.41 setenv指令:查询或显示环境变量 6.42 setup指令:设置公用程序 6.43 sndconfig指令:设置声卡 6.44 timeconfig指令:设置时区 6.45 ulimit指令:控制shell程序的资源 6.46 unalias指令:删除别名 6.47 unset指令:删除变量或函数 6.48 up2date指令:更新Linux系统 6.49 vmstat指令:显示虚拟内存空间 第7天 其他常见指令 7.1 as指令:标准GNU汇编程序 7.2 autoconf指令:产生配置脚本 7.3 autoheader指令:为configure产生模板头文件 7.4 autoreconf指令:更新已经生成的配置文件 7.5 autoscan指令:生成configure.in模板文件 7.6 autoupdate 指令:更新 configure.in文件 7.7 gcc指令:GNU的C和C++编译器 7.8 gdb指令:GNU调试器 7.9 gdbserver指令:远端GNU服务器 7.10 ld指令:链接目标文件和库文件 7.11 make指令:编译内核或模块 7.12 nm指令:显示目标文件中的符号 7.13 startx指令:启动x-Windows图形界面 7.14 xhost指令:设置X服务器的访问权限 7.15 xinit指令:启动x-Windows 7.16 xlsclients 指令:显示正在运行的 X程序 7.17 xlsfonts指令:显示目前X服务器可使用的字体 7.18 xset指令:设置x-Windows
01-LedTest -- 实现LED按照一定频率闪烁。主要用来测试LED工作是否正常。P10要接通。 02-CrossLed -- 实现花灯显示。主要学习对软件延时的使用。P10要接通。 03-FlowRight -- 实现流水灯,方向是从左向右。主要学习在C语言里如何实现准确的位操作。P10要接通。 04-FlowLeft -- 实现流水灯,方向是从右向左。主要学习在C语言里如何实现准确的位操作。P10要接通。 05-button -- 独立按键测试,实现按哪个按键然后使用对应LED显示。实现按键的检测和LED的控制。拨码开关要打到OFF位置。 06-boma -- 用LED显示拨码状态。不可以按按键。 07-Relay -- 继电器测试程序,并有LED指示同时伴有蜂鸣器的声音。P8纵向连接上面2个。 08-music -- 用C语言演奏生日快乐歌,使用软件定时。使用软件定时演奏生日快乐歌。P8纵向连接上面2个。 09-musicasm -- 用汇编语言演奏一首民歌,使用硬件定时。主要学习51定时器汇编语言编写中断功能,和如何编写中断服务程序。P8纵向连接上面2个。 10-music2 -- 用C语言中断演奏。主要学习在C语言中定义51内部定时器中断服务程序。P8纵向连接上面2个。 11-disp1234 -- 采用软件延时在数码管上显示1234ABCD。这是比较普遍的数码管显示。P14接通 12-disp1234int -- 采用硬件延时在数码管上显示1234ABCD。利用中断可以节约资源,这个程序比10更好。P14接通 13-adddec -- 使用两个按键S22,S23控制数码管上显示的数加减,具有去抖动功能。主要讲如何进行数码管动态显示并且怎样对键盘去抖动。P14接通。 14-time -- 15-alarm -- 综合实验,实现倒计时结束时使用蜂鸣器报警,编程技巧的组合。P8纵向连接上面2个。 16-uart -- UART发送和接收,实现从PC发送到单片机任何字母和数字,单片机立即向PC发送同样的字母数字可以由超级终端或者串口调试助手调试。 17-uartint -- UART接收采用不占用资源的中断接收,其余同16。推荐使用串口中断方式,使用查询方式太占用资源。 18-18b20 -- 使用温度传感器18B20测温度,并用数码管显示。P14接通。 19-1602 -- 使用LCD1602显示字符。LCD1602接到P4,方向和板子方向相反。 20-24c08 -- 对24c08进行写读操作。并把写进和读到的数用LED显示。P8纵向连接下面2个。 21-matrix -- 调试矩阵键盘,对应LED亮。注意,本程序执行需要把拨码开关打到OFF状态,程序只有矩阵键盘前两行显示,后两行请自行添加代码。 22-DS1302 -- 使用DS1302时钟芯片对预制的时间进行计时。P9横向连接左边两个。 23-chibang -- 演奏《飞舞翅膀的女孩》等音乐的综合程序。 24-wannianli -- 综合程序,用DS1302,LCD1602,温度传感器等板上设备做一个万年历。LCD1602要正确连接,P9横向连接左边两个。使能DS1302。独立按键从左到右功能为,选择设置/加/减/确定,由于去抖动功能和LCD响应时间问题,所以要按时间稍微长一点。 25-demo -- 使用RS-232实现PC与51之间通信,详细操作方法请见相关教程。 26-remote -- 红外功能测试程序,使用普通遥控器和红外接收头协同工作,用板上LED显示接收状态,LED_EN跳线必须接通,否则观察不到LED状态。 27-1602-scroll -- LCD1602动态字幕显示,方便用户理解1602的用户指令集。有时程序不正常,则为LCD1602的RAM没有清空所致,必须给板子重新上电,并按一次复位键。 28-12864 -- LCD12864显示程序。AT89S5x系列单片机需要摘掉LCD下载程序,下载完毕后插上LCD,并按复位键才可以正常显示,带着LCD下载程序会失败。STC单片机则无此问题。 29-12864-pic -- LCD12864的汉字,图形,半屏,反白及动态显示测试程序。注意事项同28。 30-adc0832 -- 扩展ADC0832调试程序,具体扩展口请见程序内说明。
关于手机的一些基础知 手机工作原理介绍的一编文章(续四) 手机所有软件工作的流程都是在CPU的作用下进行的,具体的划分包括下文所述的5个流程。这些流程都是以软件数据的形式储于手机的EEPROM和FLASHROM中. 一、开机流程 当手机的供电模块检测到电源开关键被按下后,会将手机电池的电压转换为适合手机电路各部分使用的电压值,供应给相应的电源模块,当时钟电路得到供电电压后产生震荡信号,送入逻辑电路,CPU在得到电压和时钟信号后会执行开机程序,首先从ROM中读出引导码,执行逻辑系统的自检。并且使所有的复位信号置高,如果自检通过,则CPU给出看门狗(Watchdog)信号给各模块,然后电源模块在看门狗(Watchdog)信号的作用下,维持开机状态。 二、上网流程 手机开机后,既搜索广播控制信号道(BCCH)的载频。因为系统随时都向在小区中的各用户发送出用户广播控制信息。手机收集搜索到最强的(BCCH)的载频。对应的载频频率后,读取频率校正信道(FCCH),使手机(MS)的频率与同步。所以每一个用户的手机在不同上午位置(既不同的小区)的载频是固定的,它是由GSM网络运营商组网时确定,而不是由用户的GSM手机来决定。手机读取同步信道(SCH)的信息后找出基地站(BTS)的任别码,并同步到超高帖TDMA的帖号上。手机在处理呼叫前读取系统的信息。比如:邻近小区的情况、现在所处小区的使用频率及小区是否可以使用移动系统的国家号码和网络号码等等,这些信息都可以在以BCCH上得到手机在请求接入信道(RACH)上发出接入请求信息,向系统送SIM卡帐号等信息。系统在鉴权合格后,通过允许接入信道(AGCH)使GSM手机接入信道上并分 配到GSM手机一个独立专用控制信道(SDCCH)。手机在SDDCCH上完成登记。在满速随路控制信道(SACCH)上发出控制指令,然后手机返回空闲状态,并监听BCCH和CCCH共控制信道上的信息。此时手机已经做好了寻呼的准备工作。 一、 机流程 用户监测BCCH时,必须与相近的基站取得同步。通过接收FCCH、SCH 、BCCH信息,用户将被锁定到系统及适应的BCCH上。 二、 呼叫流程 1、手机作主叫 我们GSM系统中由手机发出呼叫的情况,首先,用户在监测BCCH时,必须与相近的基站取得同步。通过接收FCCH、SCH、BCCH信息,用户将被锁定到系统及适当的BCCH上的。为了发出呼叫,用户首先要拨号,并按压GSM手机的发射键。手机用锁定它的基站系统的ARFCN来发射RACH数据突发序列。然后基站以CCCH上的AGCH信息来响应,CCCH为手机指定一个新的信道进行SDSSH连接。正在监测BCCH中T的用户,将从AGCH接收到它的ARFCN和TS安排,并立即转到新的ARFCN和TS上,这一新的ARFCN和TS分配就是SDCH(不是TCH)。一旦转接到SDCCH,用户首先等待传给它的SCCH(等待最大持续26或120ms)这信息告知手机要求的定时提前量和发射功率。基站根据手机以前的RACH传输数据能够决定出适合的定时提前量和功率级,并且通过SACCH发送适当的数据供手机处理。在接收和处理完SACCH中的定时提前量信息后,用户能够发送正常的、话音业务所要的求的是突发序列消息。当PSTN从拨号端连接到MSC,且MSC将话音路径接入服务基站时,SDCCH检查用户的合法及有效性,随后在手机和基站之间发送信息。几秒钟后,基站经由SDSSH告知手机重新转向一个为TCH安排的ARFCN和TS。一旦再次接到TCH,语音信号就在前向链路上传送,呼叫成功建立,SDCCH被腾空。 2、手机作被叫 当从PSTN发出呼叫时,其过程与上述过程类似。基站在BCCH适应内的Tso期间,广播一个PCH消息。锁定于相同ARFCN上的手机检测对它的寻呼,并回复 一个RACH消息,以确认接收到寻呼。当网络和服务器基站连接后,基站采用CCCH上的AGCH将手机分配到一个新的物理信道,以便连接SDCCH和 SACCH。一旦用户在SDCCH上建立了定时提前量并获准确认后,基站就在SDCCH上面重新分配物理信道,同时也确立了TCH的分配。 三、 关机流程 关机时,按下开关键,键盘检测模块向数字逻辑部分发出一个关机请求信号,CPU既撤消开机维持信号,执行关机程序,供电模块撤消供电,射频和逻辑电路立即停止工作,从关机。如果在开机状态下强制关机(取下电池)也有可能会造成内部软件故障。另外手机还包含其它软件工作流程如充电流程、电池监测、键盘扫描、测试流程等。 手机软件的常见故障及维修 软件故障的认识 4•4•1 什么是软件故障 在上面的节章中我们已经大概了解了软件及单片机的系统,现在让我们来了解一下什么是软件的故障。在手机中,会引发控制系统不正常有两种情况:一方面是软件故障 (如存储器、CPU虚焊、损坏,数据输送通道有问题);另一方面是软件数据丢失或者错乱软件问题。所以,我们定义:一切由CPU、存储器的数据,程序出现问题 (如错乱、损坏、丢失、中毒等等)而引起的各种各样的故障现象,统称为软件故障 4•1•2软件故障的表现 由软件引起的故障是千奇百怪的,但归纳起来主要的有四个方面: 1、 软件的错乱、损坏在手机的屏幕显示返厂维修等信息,其主要表现有: A、显示“联系服务商(CONTACT SERVICE)” B、显示“电话无效,联系服务商(PHONE FAILED SERVICE)” C、显示“软件出错(WRONG SOFTWARE)” D、显示“请等待输入八位特别码(Please Wait To Enter Special Code)” E、显示“非法软件下载(illegal software loaded)” 2、用户自行锁机但又无法开锁,所有的原厂密码均别改动,出厂开锁密码无效,这种情况也是软件故障。 3、电路正常的情况下,出现不开机、不入网、定屏死机,无信号,低电告警、无发射故障,也属于软件故障的范畴。 4、它的软件故障。 4•1•3 软件故障的判定 在手机的故障中,有些故障是很显而易见是由软件问题而引发的,如手机被锁等,只需处理软件OK!有时也可以通过开机电流来判断,去手机不开机,我们一般可以观察 其开机电流来大致判断,比如8088开机在30mA左右定一会回零。对于定屏死机,比如说夏新A8大屏不显示,小屏定屏也属软件故障;对于能开机的软件故障, 我们一般是先要观其现在的版本号,例如三星手机,西门子手机、TCL手机等,由于老版本程序存在着教多的隐藏故障,一般采用更新版进行升级。另外还要注意对应版 本的问题,比如TCL就有不同显示屏的对应版本号,波导 S1000出线“bad software”(软件坏了)此故障多是软件版本不对引起的,只要写对软件版本就可以解决问题。另外,S1000的新旧模块和新旧LCD的组合要选择合适的软件版本, 否则会出现 “bad software” 故障。例如:旧LCD+旧模块,适用软件是409AM11B。19A,如果错用了412KM12A。21A或412KM12A。20F均会出现“bad software”。旧模块,适用软件是412KM12A.21A,如果错用了409AM11B.19A或409AM11B.19F。均会出现“bad software”等。三星机也有不同版本的对应升级程序。当然也有修理出来的软件故障,这是由于厂家对程序进行硬件跟踪对码工作,导致更换相应元件后而出现软件故障不能正常使用。比如NOKIA手机从DCT3都一直硬件对码加密措施;现在三星比如V208说机也采用了硬件对码技术,对我们的软件维修带来了阻碍。 第二节 手机软件故障处理技巧 CPU通过读取到的内部指挥手机工作,这就要求软件内容必须正确,不能 丝毫的差错,遇到软件故障应按一下方法进行处理。 4•2•1 缩小故障范围 判断故障需先将故障范围缩小,并要确定故障类型,既属于硬件故障(如存储器本身损坏)这是内部软件故障。若是硬件故障,在却保其无焊接不良的情况下,应对其进行 更换。若是软件故障,必须用软件维修仪来重新写软件。维修实践中发现,手机的软件绝大多数出在码片,并多数是芯片中的数据丢失或出错 4•2•2 处理故障技巧 手机出现软件故障,有免拆机和拆机两种方式进行处理,下面介绍两种方式的特点。免拆机方式就是借助专门的软件维修设备,配合电脑,在不拆机的情况下对手机软件故 障进行处理。比如目前较好的全功能数码手机软件故障维修仪,可处理如锁机、显示“联系服务商”、“话机坏,请送修”、“输入保密码” 、 “软件环” 、 不识 卡、不入网、黑屏、低电报警故障,用免拆机方式处理软件故障很方便,不用拆机,不改变手机的串号IMEI,对手机内部电路也无须影响。 免拆机处理方式不是很万能的,如果手机不能开机或碰到其他一些没有免拆机处理程序的品牌手机;遇到软件故障只有将手机的码片或字库用热风枪吹下,用万能编程器(如LABTOOL-48),配电脑进行重写(电脑中事先应存有各种手机的数据资料),即用电脑内已有的正常数据覆盖故障手机中的数据,如果找不到故障手机同型号数据,则只有自己进行扩充,需先找一台同型号手机,将其码片拆下,用编程器读出其中数据,存进电脑即可。拆机软件维修仪不适用于码片和版本合二为一的机型(早斯的手机如摩托罗拉L2000、西门子2588、摩托罗拉T2688等。现在的新型手机如摩托罗拉系列包括V988、V60等)无论用免拆机软件维修仪还是用拆机软件维修仪,写资料前都要查看手机的版本,即使是同一类型的手机,由于其生产日期和产地的不同,其版本号可能不同,所以,在维修手机过程中,对软件的处理一定要核对其版本,否则会造成不开机或某些功能失效等故障。另外,很多手机的字库采用了BGA封装,如果没有十分把握,特别是初学者就千万不要去动他,因为BGA封装的集成电路对焊接技术要求很高,在重装时要使用专门的焊接工具(BGA置锡工具),否则会越修越复杂。 第三节 用软件维修仪对软件故障进行处理的方法 由于软件故障的处理在手机维修中的重要性,使得从事手机维修仪生产的厂家推出了各种各样的软件故障维修仪。如上所述的维修处理技巧中已提及,从处理的方法来分,主要为以下几大类:一类是将字库或码片拆下来重写,-48以及其它类型的编程器;另一类是免拆机的软件修复。而在免拆机情况下对手机软件的重写,又可分为两种情况:一种情况是用免电脑、免拆机的软件维修仪进行修复;另一种情况用电脑、免拆机的软件维修仪进行修复。虽然目前处理手机软件的仪器工具很多,但总的来说都是利用维修软件及工具将手机内单片机系统出错的程序资料重写或覆盖并进行调校。 4•3•1 用带电脑需拆机软件仪进行维修的方法 这种方法是将正确码片或字库的数据资料读出存放于电脑当中,当手机出现软件故障时,将故障机的码片或字库取下来,放上万用编程器去重新写入软件资料,然后重新焊回码片或字库。些方法在早期的数码手机维修当中用的较多,原因是早期的手机码片或字库多容易取下来读和写,但由于近期生产的手机字库大多为BGA封装,不便取下来。而且厂家也在软件上采取了相应的加密措施,使的有一些手机的码片或字库不能拆下来读写,使得这种方法存在局限性,将逐渐被弃用。 4•3•2 用免电脑免拆机软件仪进行软件维修的方法 在软件故障当中有一些只是软件错乱造成的,如“手机被锁”这一类型的故障就只要处理码片资料就可以解决,由于软件数据量不大,采用简单的单片机就可以处理。但由于字库数据量较大,采用这种方法一般的单片机就无法达到要求,所以在处理字库引起的软件故障中用的很少。这种方法的优点是操作简单,不需要拆机。缺点是由于单片机功能欠缺家上存储器容量有限,只能处理一些简单故障。如图4-3-2所示的就是用于修改DTC4 串号的免电脑免拆机的软件维修仪。 4•3•3 用电脑免拆机软件仪进行软件维修的方法 由于存储器数据容量太大和采用BGA封装,所以采用前面的两种方法都不能很好解决问题。存储容量的增大,最好借助于电脑。为了不拆字库,最好用免拆机的方法通过手机的外部数据接口来对手机软件进行修复。这种方法就是带电脑免拆机的软件维修方法,在近期的手机维修当中用的较多。这种方法的特点是:一方面将手机软件存资料入电脑,由于电脑存储器容量大,因此可以将大量的手机软件资料存入;另一方面利用手机的外部数据接口,配合相应的驱动程序,可以将手机和电脑连接在一起进行通信,将软件资料从电脑传输到手机,进行软件修复。带电脑免拆机的软件故障维修仪很多,但大多数是将手机数据软件存放于电脑,然后通过电脑串口输出,经过RS232接口与手机进行通信。摩托罗拉手机的数据接口与其它手机不一样,采用了专用的接口电路,所以数据从串口输出后要经过一个专用接口才能写入手机,这种设备我们通常城之为“EMMIBOX”。还有集所有软件仪功能于一体的“BOX王”。上述这几种方法各有其特点,但目前用的最多且最有效的方法是第三种方法。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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