搜索
bottom↓
回复: 102

Delphi 中串口通讯的实现

[复制链接]
头像被屏蔽

出0入0汤圆

发表于 2005-9-16 21:10:10 | 显示全部楼层 |阅读模式
Delphi 中串口通讯的实现
   作者:张海航

   Delphi 是新一代可视化开发工具,它具有功能强大、简便易用和代码执行速度快等特点,是全球公认的快速应用开发工具技术的先驱者,它越来越在构架企业信息系统方面发挥着重要作用。由于Delphi 这些显著特点,许多程序员选择Delphi作为开发工具编制各种应用程序。但是,令人惋惜的是Delphi没有自带串口通讯的控件,在它的帮助文档里也没有提及串口通讯,这就给编制通讯程序的开发人员带来众多麻烦,影响了开发进度,下面就这一技术进行讨论。

  用Delphi 实现串口通讯,常用的几种方法为:使用控件如MSCOMM和SPCOMM,使用API函数或者在Delphi 中调用其它串口通讯程序。利用API编写串口通信程序较为复杂,需要掌握大量通信知识,其优点是可实现的功能更强大,应用面更广泛,更适合于编写较为复杂的低层次通信程序。相比较而言,利用SPComm控件则相对较简单,该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作。

  使用控件这一方法容易掌握,而SPCOMM支持多线程,所以SPCOMM控件的应用更加广泛。结合实例详细介绍SPCOMM的使用。

一.SPCOMM控件的安装

      1.选择下拉菜单Component的第二项Install Component 。
            
              图1

            弹出图1所示的窗口,在Unit file name 处填写控件SPCOMM控件所在路径,其它可用默认值,点击OK按纽
      2.安装成功后,system控件面板中将出现一个红色控件COMM。现在使用COMM控件可以象Delphi自带控件一样使用。

二.SPCOMM的主要属性,方法和事件

   1.属性
       CommName:填写COM1,COM2…等串口的名字,在打开串口前,必须填写好此值。
       BaudRate:设定波特率9600,4800等,根据实际需要来定,在串口打开后也可更改波特率,实际波特率随之更改。
       ParityCheck:奇偶校验。
       ByteSize:字节长度_5,_6,_7,_8等,根据实际情况设定。
       Parity:奇偶校验位
       pBits:停止位
       SendDataEmpty:这是一个布尔属性,为true时表示发送缓存为空,或者发送队列里没有信息;为False时表示表示发送缓存不为空,或者发送队列里有信息。

   2.方法
      Startcomm过程用于打开串口,当打开失败时通常会报错,错误主要有7种:
         ⑴串口已经打开 ;
         ⑵打开串口错误 ;
         ⑶文件句柄不是通讯句柄;
         ⑷不能够安装通讯缓存;
         ⑸不能产生事件 ;
         ⑹不能产生读进程;
         ⑺不能产生写进程;
      StopComm过程用于关闭串口,没有返回值。

  函数WriteCommData(pDataToWrite: PChar;dwSizeofDataToWrite:Word ): boolean 用于发送一个字符串到写线程,发送成功返回true,发送失败返回false, 执行此函数将立即得到返回值,发送操作随后执行。函数有两个参数,其中 pdatatowrite是要发送的字符串,dwsizeofdatatowrite 是发送的长度。

   3.事件

      OnReceiveData : procedure (Sender: TObject;Buffer: Pointer;BufferLength: Word) of object 
    当输入缓存有数据时将触发该事件,在这里可以对从串口收到的数据进行处理。Buffer中是收到的数据,bufferlength是收到的数据长度。
      OnReceiveError : procedure(Sender: TObject; EventMask : DWORD)
    当接受数据时出现错误将触发该事件。

三.SPCOMM的使用

  下面,我们结合一个串口通讯的例子来说明SPCOMM的使用。

  为了实现PC与单片机8051之间的通讯,首先要调通它们之间的握手信号,假定它们之间的通讯协议是,PC到8051一帧数据6个字节,8051到PC一帧数据也为6个字节,当PC发出(F0,01,FF,FF,01,F0)后能收到这样一帧(F0,01,FF,FF,01,F0),表示数据通信握手成功,两者之间就可以按照协议相互传输数据。在PC方要发送及接受数据需要以下步骤:

   1.创建一个新的工程COMM.DPR,把窗体的NAME属性改为FCOMM,把窗体的标题改为测试通讯,添加控件。

  对COMM1(黑色矩形围住的控件)进行属性设计,设波特率4800,校验位无,字节长度_8,停止位_1,串口选择COM1。Memo1中将显示发送和接受的数据。选择File/Save As将新的窗体存储为Comm.pas。

   2.编写源代码
      变量说明
         var
         FCOMM: TFCOMM;
         Viewstring:string;
         i:integer;
         rbuf,sbuf:array[1..6] of byte;

       打开串口
         procedure TFCOMM.FormShow(Sender: TObject);
            begin
               comm1.StartComm;
            end;

      关闭串口
         procedure TFCOMM.FormClose(Sender: TObject; var Action: TCloseAction);
            begin
               comm1.StopComm;
            end;


      发送数据

                    自定义的发送过程
                        procedure senddata;
                            var
                            i:integer;
                            commflg:boolean;
                        begin
                            viewstring:="";
                            commflg:=true;
                            for i:=1 to 6 do
                                begin
                                    if not fcomm.comm1.writecommdata(@sbuf,1) then
                                        begin
                                            commflg:=false;
                                            break;
                                        end;
                                    sleep(2); {发送时字节间的延时}
                                    viewstring:=viewstring+inttohex(sbuf,2)+" ";
                                end;
                            viewstring:="发送"+viewstring;
                            fcomm.memo1.lines.add(viewstring);
                            fcomm.memo1.lines.add("");
                            if not commflg then messagedlg("发送失败!",mterror,[mbyes],0);
                        end;

                        procedure TFCOMM.Btn_sendClick(Sender: TObject);{发送按钮的点击事件}
                        begin
                            sbuf[1]:=byte($f0); {帧头}
                            sbuf[2]:=byte($01); {命令号}
                            sbuf[3]:=byte($ff);
                            sbuf[4]:=byte($ff);
                            sbuf[5]:=byte($01);
                            sbuf[6]:=byte($0f); {帧尾}
                            senddata;{调用发送函数}
                        end;

                接收过程
                        procedure TFCOMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
                            BufferLength: Word);
                            var
                            i:integer;
                        begin
                            viewstring:="";
                            move(buffer^,pchar(@rbuf^),bufferlength);
                            for i:=1 to bufferlength do
                            viewstring:=viewstring+inttohex(rbuf,2)+" ";
                            viewstring:="接受"+viewstring;
                            memo1.lines.add(viewstring);
                            memo1.lines.add("");
                        end;

  如果memo1上显示发送F0 01 FF FF 0F 和 接受F0 01 FF FF F0 这表示串口已正确的发送出数据并正确的接受到数据,串口通讯成功。

出0入0汤圆

发表于 2005-9-16 21:22:04 | 显示全部楼层
用APi可以做成绿色的.



用SPCOMM控件.



程序可不可做成绿色的?

出0入0汤圆

发表于 2005-9-17 00:00:02 | 显示全部楼层
好样的,阿莫,带头了,我打算用tapro来作一个串口通讯的试验

到时候也把源程序传上来共享。

出0入0汤圆

发表于 2005-12-28 09:14:08 | 显示全部楼层
我用SPCOMM为什么有问题?

我发送数据都很正常,但接收的数据总是有点问题,0x11和0x13这两个数据接收不到,也就是说接收一堆数里,这两个肯定没有接收到的。

出0入0汤圆

发表于 2005-12-28 10:56:34 | 显示全部楼层
1楼,很绿色.....

3楼,关闭软件流控制就可以了。0x11和0x13是软件流控制的控制符
-----此内容被tinghost于2005-12-28,10:57:14编辑过

出0入0汤圆

发表于 2005-12-29 10:26:50 | 显示全部楼层
谢谢,可我不知道如何关闭呀,还请再次指教!!

出0入0汤圆

发表于 2005-12-29 16:12:17 | 显示全部楼层
Outx_XonXoffFlow属性置False

Inx_XonXoffFlow属性置False

如果是做二进制应用的话,最好把IgnoreNullChar属性也False掉,不然还是有东西接收不到的。
-----此内容被tinghost于2005-12-29,16:14:41编辑过

出0入0汤圆

发表于 2006-1-20 10:38:51 | 显示全部楼层
delphi+cport 更好,基本不用编写程序就搞定1!!

一个字!爽

出0入0汤圆

发表于 2007-11-7 13:12:31 | 显示全部楼层
你妈的。。跟本不行

出0入0汤圆

发表于 2007-11-7 18:14:28 | 显示全部楼层
我只用ComPort控件,很好用
http://sourceforge.net/projects/comport/

出0入0汤圆

发表于 2007-11-7 18:30:34 | 显示全部楼层
8楼的,

   哪里不行了啊 ???

出0入4汤圆

发表于 2007-11-7 20:06:44 | 显示全部楼层
armok  I love you

出0入0汤圆

发表于 2007-11-9 22:17:34 | 显示全部楼层
好东东
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2007-11-10 07:18:44 | 显示全部楼层
既然这么多人支持,我将格式重新排版一下。

出0入0汤圆

发表于 2007-11-10 08:52:27 | 显示全部楼层
SPCOMM控件 是自带的吗? 还是要自己去找?

出0入0汤圆

发表于 2007-11-10 09:28:15 | 显示全部楼层
看来我错了,交大才子连菜鸟也算不上,连转的文章都这么没品味

出0入0汤圆

发表于 2007-11-10 09:30:03 | 显示全部楼层
发送的代码的可以缩短,不需要用for循环,直接这样用即可:

fcomm.comm1.writecommdata(@sbuf[1],6);

出0入0汤圆

发表于 2008-1-20 17:24:35 | 显示全部楼层
很想保存下来,不过有两个帖 太。。风景了,为何不去掉。
如果觉得自己水平搞,可发点资料,给我这样的菜鸟学学,如果骂人和讥讽能使我这样的笨“菜鸟”有所提高,我也接受了。
只要能学到东西。

出0入0汤圆

发表于 2008-2-14 11:01:09 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-2-14 11:04:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-2-14 11:04:38 | 显示全部楼层
mark

出0入8汤圆

发表于 2008-2-14 11:12:23 | 显示全部楼层
mark too

出0入0汤圆

发表于 2008-2-21 11:19:22 | 显示全部楼层
学习中..........

出0入0汤圆

发表于 2008-3-4 09:22:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-3-7 10:52:05 | 显示全部楼层
站长这么有心介绍,为什么不直接上传SPCOMM控件?也好让我们的初哥学习下,多谢了!

出0入0汤圆

发表于 2008-4-26 21:43:31 | 显示全部楼层
标记一下

出0入0汤圆

发表于 2008-6-4 20:16:55 | 显示全部楼层
记下了。

出0入0汤圆

发表于 2008-6-4 22:13:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-6-10 09:59:04 | 显示全部楼层
大家好,用SPCOM是绿色的,在Delphi中很好用,建用使用该控件完成串口通信

出0入0汤圆

发表于 2008-6-14 10:56:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-6-21 07:16:11 | 显示全部楼层
上传SPCOMM控件。
点击此处下载 ourdev_320222.rar(文件大小:27K) (原文件名:SPcomm控件源代码.rar)

出0入0汤圆

发表于 2008-7-4 23:21:06 | 显示全部楼层
ComPort控件支持多线程吗?如果可以,俺也试试

出0入0汤圆

发表于 2008-7-5 07:54:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-7-18 17:23:55 | 显示全部楼层
为什么我用两个串口通讯不行呢

出0入0汤圆

发表于 2008-7-19 15:44:09 | 显示全部楼层
这几天用了一下SPComm,有几点不解,请高手指正:
1,是不是每一字节被接收到就要产生oncomm事件吗?
2,那如果连继接收n个字节就要产生n个oncomm事件吗?  
3,比如单片机响连继向PC发1000个字节,那么是等这个1000全部收到才处理,还是收一个字节就要处理呢?
4,比如单片机响连继向PC发1000个字节,我只要前面两个字节,我怎么判断已经到两个字节了呢?

出0入0汤圆

发表于 2008-7-19 20:32:21 | 显示全部楼层
記下吧

出0入0汤圆

发表于 2008-8-30 17:01:09 | 显示全部楼层
记号!

出0入0汤圆

发表于 2008-8-30 18:59:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-9-23 22:39:24 | 显示全部楼层
学习

出0入0汤圆

发表于 2008-10-12 19:50:38 | 显示全部楼层
大学时学过delphi,现在忘光了,唉,还得从头再来

出0入0汤圆

发表于 2008-10-18 20:08:15 | 显示全部楼层
DING

出0入0汤圆

发表于 2008-10-25 09:04:51 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-10-28 21:19:05 | 显示全部楼层
TO:fangbao 伍奇

请问能否介绍一下,如何安装这个控件。我已经安装一天了,还是没有成功,总有文件找不到

出0入0汤圆

发表于 2008-10-29 02:57:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-12-9 22:43:37 | 显示全部楼层
Mark!正在学习Delphi...

出0入0汤圆

发表于 2008-12-10 08:15:23 | 显示全部楼层
顶一个呀

出0入0汤圆

发表于 2008-12-10 10:52:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-12-21 22:52:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-5-31 15:09:29 | 显示全部楼层
留个脚印

出0入0汤圆

发表于 2009-5-31 16:00:00 | 显示全部楼层
有高手整个例子学习下最好

出0入12汤圆

发表于 2009-5-31 16:53:44 | 显示全部楼层
Spcomm可以不用安装,把Register注释掉,用的时候uses源文件,然后就可以动态创建了。

出0入0汤圆

发表于 2009-6-28 01:12:47 | 显示全部楼层
mark!

出0入0汤圆

发表于 2009-10-17 20:38:23 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-11-7 08:23:43 | 显示全部楼层
mark ,thank u very much

出0入0汤圆

发表于 2009-11-7 10:05:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-11-11 20:25:26 | 显示全部楼层
标记 以后会用到

出0入0汤圆

发表于 2009-11-11 20:58:18 | 显示全部楼层
有没有高手知道在SPCOMM中如何判断端口是否已经打开?如果使用try的就不必提了,调试太不方便了。我先前有用过判断句柄是否为零的方法,但是好像如果检测多次就会造成SPCOMM无响应,不知是否与它的开线程方式有关。

出0入0汤圆

发表于 2009-11-11 21:20:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-11-11 21:31:21 | 显示全部楼层
Thanks

出0入0汤圆

发表于 2009-11-20 19:53:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-31 16:07:21 | 显示全部楼层
我的发出去时对的,但是接收的时乱码!时怎么回事啊? 是不是我没连串口的原因呢?

出0入0汤圆

发表于 2010-1-5 22:45:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-13 15:45:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-2 10:15:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-2 10:49:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-16 22:18:53 | 显示全部楼层
哪个高手能详细讲一下这个控件的安装吗?我用的是delphi2010。楼主位的安装方法在2010版本中不行。

出0入0汤圆

发表于 2010-2-17 00:16:33 | 显示全部楼层
1.我对30楼提供的spcomm的源码进行了修改,并生成了bpl文件以便在delphi2010上使用。
2.我修改了其中的3处代码,这三处代码在SPCOMM.pas中的1199行类似
SetupReadEvent( @overlappedRead,@szInputBuffer , INPUTBUFFERSIZE,nNumberOfBytesRead )
在原代码中szInputBuffer前面没有@符号。
3.在使用时按照正常的加载控件的步骤执行,然后需要将SPCOMM.DCU放入您工程的根目录下,否则工程编译时会报错。
点击此处下载 ourdev_534080.rar(文件大小:106K) (原文件名:SPcomm控件源代码_经过Thunder修改.rar)

出0入0汤圆

发表于 2010-2-17 00:22:24 | 显示全部楼层
今天差不多了,改天仔细研究一下这个控件

出0入0汤圆

发表于 2010-2-17 01:10:42 | 显示全部楼层
正准备学习,感谢莫老大。

出0入0汤圆

发表于 2010-2-18 23:49:07 | 显示全部楼层
我总感觉我在66楼改的地方有点不大对劲,我在delphi7.0的环境下加载这个控件的pas是没有问题的,在delhpi2010的环境下因为控件的加载不支持pas文件,所以我就先新建一个package文件,然后再将spcomm的pas加载进去,compile之后就有错误提示E2010:Incompatible types:'Array'and'PAnsichar',这个是什么原因呢?有高手能解释一下吗?

出0入0汤圆

发表于 2010-2-19 14:55:07 | 显示全部楼层
SPCOMM,使用它陪随阿莫网站一样长久,不过感觉它的速度太慢了,不满足目前手上要求的速度,用了其它的控件速度快得惊人,有空上传一个示例给大家

出0入0汤圆

发表于 2010-2-20 09:41:09 | 显示全部楼层
收藏了

出0入0汤圆

发表于 2010-2-20 10:14:41 | 显示全部楼层
1.今天重新搞了一下,附件是新封装的spomm控件的bpl文件:对spomm控件重新进行了封装,在Delphi2010下编译通过
ourdev_534332.rar(文件大小:65K) (原文件名:SPCOMM控件_build20100220.rar)
2.此程序是spomm控件的使用,在Delphi2010下也能编译通过了,在测试时最好有串口存在,否则会有问题。
在Delphi2010下编译通过ourdev_534333.rar(文件大小:340K) (原文件名:spcomm使用.rar)
3.在66楼时封装的有问题,给您带来不便请原谅。

出0入0汤圆

发表于 2010-2-21 08:30:09 | 显示全部楼层
请问在Delphi7.0中如何用spcomm控件打开指定的串口?

出0入0汤圆

发表于 2010-2-21 10:14:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-24 13:46:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-17 22:06:19 | 显示全部楼层
delephi怎么调用VB谢谢程序
对VB的文本框  text   combo   command
进行调用,谢谢各位啊

出0入0汤圆

发表于 2010-4-3 03:13:00 | 显示全部楼层
好东西,谢谢楼主

出0入0汤圆

发表于 2010-4-7 14:14:50 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-4-9 21:19:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-11 19:58:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-14 21:28:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-15 10:02:41 | 显示全部楼层
好东西啊

出0入0汤圆

发表于 2010-9-19 13:24:06 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-9-28 15:45:05 | 显示全部楼层
回复【72楼】xiaolei0428 Thunder
1.今天重新搞了一下,附件是新封装的spomm控件的bpl文件:对spomm控件重新进行了封装,在delphi2010下编译通过
(原文件名:spcomm控件_build20100220.rar)  
2.此程序是spomm控件的使用,在delphi2010下也能编译通过了,在测试时最好有串口存在,否则会有问题。
在delphi2010下编译通过 (原文件名:spcomm使用.rar)  
3.在66楼时封装的有问题,给您带来不便请原谅。

-----------------------------------------------------------------------

兄弟,,你那在D2010有没有出现不能触发接收事件!怎么解决,,olyhome@163.com

出0入0汤圆

发表于 2010-9-28 15:48:41 | 显示全部楼层
回复【72楼】xiaolei0428 Thunder
1.今天重新搞了一下,附件是新封装的spomm控件的bpl文件:对spomm控件重新进行了封装,在delphi2010下编译通过
(原文件名:spcomm控件_build20100220.rar)  
2.此程序是spomm控件的使用,在delphi2010下也能编译通过了,在测试时最好有串口存在,否则会有问题。
在delphi2010下编译通过 (原文件名:spcomm使用.rar)  
3.在66楼时封装的有问题,给您带来不便请原谅。

-----------------------------------------------------------------------

兄弟,,你那在D2010有没有出现不能触发接收事件!怎么解决,, Email:olyhome@163.com
procedure TComm.ReceiveData(Buffer: PAnsiChar; BufferLength: Word);
begin
   if Assigned(FOnReceiveData) then
       FOnReceiveData( self, Buffer, BufferLength )
end;

这中D7接收数据是Assigned(FOnReceiveData) 为Ttue,但在D2010为Flase,
D7能正常接收数据,但D2010连接收事件都不能触发,接收数据没有返回!!

出0入0汤圆

发表于 2010-10-26 18:20:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-4 22:04:51 | 显示全部楼层
好东东。

出0入0汤圆

发表于 2010-12-8 18:38:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-21 23:17:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-23 20:56:49 | 显示全部楼层

(原文件名:QQ截图未命名.JPG)

出0入0汤圆

发表于 2011-2-23 23:10:14 | 显示全部楼层
回复【34楼】national6
这几天用了一下spcomm,有几点不解,请高手指正:  
1,是不是每一字节被接收到就要产生oncomm事件吗?  
2,那如果连继接收n个字节就要产生n个oncomm事件吗?   
3,比如单片机响连继向pc发1000个字节,那么是等这个1000全部收到才处理,还是收一个字节就要处理呢?  
4,比如单片机响连继向pc发1000个字节,我只要前面两个字节,我怎么判断已经到两个字节了呢?
-----------------------------------------------------------------------


SPCOMM采用定时读写文件的方式操作的COM口,连续收到数据时只产生一个OnReceiveData事件,但数据过大时好象会有缓冲区溢出的报错。具体内容请看源码的TReadThread部分,你可以自己修改成你想要的接收处理方法。



回复【56楼】z1234 无知者
有没有高手知道在spcomm中如何判断端口是否已经打开?如果使用try的就不必提了,调试太不方便了。我先前有用过判断句柄是否为零的方法,但是好像如果检测多次就会造成spcomm无响应,不知是否与它的开线程方式有关。
-----------------------------------------------------------------------

你自己打开个文件“COM1”,成功则可认为系统的COM1口可以使用,这个是从DOS时代就有的知识




回复【73楼】xiaolei0428 Thunder
请问在delphi7.0中如何用spcomm控件打开指定的串口?
-----------------------------------------------------------------------

COMMNAME:='COM1'

出0入0汤圆

发表于 2011-2-23 23:58:41 | 显示全部楼层
调用API函数操作COM  C语言 来源一个GSM项目 可以用ourdev_618105CLBKUV.rar(文件大小:771字节) (原文件名:api_com.rar)
以前找的一个DELPHI7下运行SPCOMM的实例ourdev_618106K1JY1X.rar(文件大小:176K) (原文件名:spcomm使用.rar)


有没有人用 C++ BUILDER ,和DELPHI是一家子,SPCOMM直接可以在C++BILDER里面用  明天我把我那个使用C++ BUILDER + SPCOMM的项目传上来,不在这个电脑上 也不在邮箱里面 。

出0入0汤圆

发表于 2011-3-12 20:16:12 | 显示全部楼层
使用SPCOMM的一个案例ourdev_622073OG4M14.rar(文件大小:1.16M) (原文件名:uart2bus_latest.rar)

出0入0汤圆

发表于 2011-3-21 21:00:02 | 显示全部楼层
学习!!!!!

出0入0汤圆

发表于 2011-3-21 21:03:55 | 显示全部楼层
mark!!!!!!!!

出0入0汤圆

发表于 2011-3-26 23:46:40 | 显示全部楼层
历时5,6年的帖子,强力maek

出0入0汤圆

发表于 2011-3-27 16:48:36 | 显示全部楼层
马克了

出0入0汤圆

发表于 2011-4-4 19:39:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-5 01:04:47 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 08:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表