51单片机-PASCAL语言实例10:用Lazarus开发串口应用程序

本文介绍了如何利用Lazarus开发环境和PASCAL语言,结合lazSerial库创建串口应用程序,实现PC与51单片机之间的通信。通过这种方式,可以更直观地调试单片机程序,且代码复用性高。
摘要由CSDN通过智能技术生成

实例9中,我是通过STC-ISP软件中串口助手调试单片机程序的,不太直观,能否在PC上用PASCAL写一个程序通过串口与单片机沟通呢。完全可以,可以用免费的开发环境LAZARUS开发,安装 lazSerial 后,进行快速开发。上位机和下位机,完全使用PASCAL开发,代码可以复用,非常方便。
在这里插入图片描述

// MainForm.pas
unit MainFrm;

{
   $mode objfpc}{
   $H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
  ComCtrls, LazSerial, LazSynaSer;

type

  {
    TMainForm }

  TMainForm = class(TForm)
    BtnOpen: TButton;
    BtnClose: TButton;
    BtnQuery: TButton;
    BtnCtrlSerial: TButton;
    CbbDev: TComboBox;
    CbbBaud: TComboBox;
    CbbCOM: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    LazSerial1: TLazSerial;
    MemInfo: TMemo;
    Shape1: TShape;
    StatusBar1: TStatusBar;
    procedure BtnCloseClick(Sender: TObject);
    procedure BtnCtrlSerialClick(Sender: TObject);
    procedure BtnOpenClick(Sender: TObject);
    procedure BtnQueryClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure LazSerial1RxData(Sender: TObject);
  private

  public

  end;

var
  MainForm: TMainForm;

implementation

{
   $R *.lfm}

uses
    MyDef;

{
    TMainForm }

procedure TMainForm.BtnCtrlSerialClick(Sender: TObject);
begin
  lazSerial1.BaudRate:=br__9600;
  lazSerial1.Device:=CbbCom.Text;
  try
     lazSerial1.Active:=Not lazSerial1.Active;
  except
      ShowMessage('打开串口失败');
  end;

  if not lazSerial1.Active  then   BtnCtrlSerial.Caption:='打开串口'
  else   BtnCtrlSerial.Caption
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
本书以详尽资料和大量的范例深入讨论了有关32位Windows编程的高级问题,包括进程和线程的管理、Win32的内存管理、消息处理、动态链接库、文件系统和设备输入输出、结构化异常处理、Unicode等,并重点讨论了Windows 95和Windows NT在实现上的不同之处,其中包含了大量的编程技巧。 本书可供高等院校计算机专业的师生和广大的计算机编程人员使用。----------《Windows高级编程指南(第三版)》 原书: Advanced Windows (3rd Ed) 作者: Jeffrey Richter 译者: 王书洪 刘光明---------- 抽空将书中的C程序用PASCAL写了一遍, 由于水平所限, 可能存在错误, 仅供参考! 感谢网友chinesexing提供PDF电子书! 感谢老朋友savetime兄提供附书代码! 刘麻子 于 05年7月7号----------附上代码列表: CopyData -- 利用WM_COPYDATA跨进程传递数据 VMStat -- 显示虚拟内存状态 VMAlloc -- 使用虚拟内存 (保留、提交、回收、释放) VMMap -- 遍历VMMap.exe进程的虚拟内存空间 DIPS & -- 进入Explorer.exe进程以操作桌面项目 DIPSLib SysInfo -- 显示系统相关信息 MMFShare -- 利用内存映射共享数据 FileRev -- 利用内存映射处理文件 Counter -- 纤程例子 (后台纤程以低优先级作运算) DiskInfo -- 显示本地逻辑驱动器信息 MultInst -- 使用EXE中带有共享属性的PE节存储数据 TInjLib & -- 远程线程装载指定DLL到指定进程空间 ImgWalk LISLab -- 实验"局部输入状态" (Local Input State) TLSStat -- 在EXE模块中使用静态TLS TLSDyn & -- 在DLL模块中使用动态TLS SomeLib ModUse & -- 使用DLL中带有共享属性的PE节存储数据 Module DocStats -- 利用事件对象使多个线程协同工作 (统计文档) Mutexes -- 利用互斥对象使(计算/显示)两个线程同步 DirWalk -- 遍历DirWalk.exe所在磁盘目录树 FileChng -- 监视目录变化 CritSecs -- 利用临界区对象使(计算/显示)两个线程同步 SprMrkt -- 利用互斥对象和信号量对象控制"超市"运转 SEHSum -- 利用SEH机制, 修复堆栈溢出 SEHTerm -- 演示SEH终止处理和异常抛出 SEHExcpt -- 利用SEH机制, 稀疏提交数组内存 SEHSoft -- 抛出自定义异常通知程序清零记录 Bucket -- SWMRG复合同步对象 (单写入/多读取) AlertIO -- 利用"回调通知"进行文件拷贝 (异步&分块) IOCmpPrt -- 利用"完成端口"进行文件拷贝 (异步&分块)
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值