当前位置:文档之家› CSharp源码(Kit11101)

CSharp源码(Kit11101)

CSharp源码(Kit11101)
CSharp源码(Kit11101)

CSharp源码(Kit11101)

// POST: /Manage/VerifyPhoneNumber

[HttpPost]

[ValidateAntiForgeryToken]

public async Task

VerifyPhoneNumber(VerifyPhoneNumberViewModel model)

{

if (!ModelState.IsValid)

{

return View(model);

}

var result =

await

UserManager.ChangePhoneNumberAsync(User.Identity.GetUserId(), model.PhoneNumber, model.Code);

if (result.Succeeded)

{

var user = await

UserManager.FindByIdAsync(User.Identity.GetUserId());

if (user != null)

{

await SignInManager.SignInAsync(user, isPersistent: false,

rememberBrowser: false);

}

return RedirectToAction("ShopManage",

new { MessageFt.yu.Fix=

ManageMessageFt.yu.FixFixFixId.AddPhoneSuccess });

}

// 如果我们进行到这一步时某个地方出错,则重新显示表单ModelState.AddModelError("", "无法验证电话号码");

return View(model);

}

#if !defined(AFX_i11ADJUSTBUTTON_i11H_i11F431CB00_i116E5C_ i114D71_i1195DA_i112CDBDFD3F9B9_i11INCLUDED_i11)

#define

AFX_i11ADJUSTBUTTON_i11H_i11F431CB00_i116E5C_i114D71_i1 195DA_i112CDBDFD3F9B9_i11INCLUDED_i11

#if _i11MSC_i11VER > 1000

#pragma once

#endif _i11MSC_i11VER > 1000

AdjustButton.h : header file

AdjustButton window

class AdjustButton : public CButton

{

Construction

public:

AdjustButton();

static int Nums;

static int Rows;

Overrides

ClassWizard generated virtual function overrides

{

{AFX_i11VIRTUAL(AdjustButton)

public:

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); protected:

}}AFX_i11VIRTUA

public:

void SetStyle(int nStyle=0,int nAspect=0);

virtual ~AdjustButton();

Generated message map functions

protected:

{

{AFX_i11MSG(AdjustButton)

afx_i11msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

afx_i11msg void OnLButtonDown(UINT nFlags, CPoint point);

afx_i11msg void OnLButtonUp(UINT nFlags, CPoint point);

afx_i11msg void OnRButtonDown(UINT nFlags, CPoint point);

afx_i11msg void OnRButtonUp(UINT nFlags, CPoint point);

}}AFX_i11MSG

DECLARE_i11MESSAGE_i11MAP()

private:

int m_i11Style,m_i11Aspect;

};

{{AFX_i11INSERT_i11LOCATION}}

Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif !defined(AFX_i11ADJUSTBUTTON_i11H_i11F431CB00_i116 E5C_i114D71_i1195DA_i112CDBDFD3F9B9_i11INCLUDED_i11)

#if !defined(AFX_i11REGHANDMONEYDLG_i11H_i119DB01EBD_i 113947_i114D53_i11B66A_i11F5E762C763E8_i11INCLUDED_i11)

#define

AFX_i11REGHANDMONEYDLG_i11H_i119DB01EBD_i113947_i114 D53_i11B66A_i11F5E762C763E8_i11INCLUDED_i11

#if _i11MSC_i11VER > 1000

#pragma once

#endif _i11MSC_i11VER > 1000

Reghandmoneydlg.h : header file

CReghandmoneydlg dialog

class CReghandmoneydlg : public CDialog

{

Construction

public:

CReghandmoneydlg(CWnd pParent = NULL); standard constructor // 定义ADO连接、命令、记录集变量指针

_i11ConnectionPtrm_i11pConnection;

_i11CommandPtrm_i11pCommand;

_i11RecordsetPtrm_i11pRecordset;

_i11RecordsetPtrm_i11pRecordsetfind;

CStringm_i11realmoney;

CStringm_i11room_i11money;

CStringm_i11regnumber;

CStringm_i11gustname;

CStringm_i11gustaddr;

CStringm_i11addr;

CStringm_i11pre_i11discount;

CStringm_i11roomlevel;

CStringm_i11zhengjian_i11number;

CStringm_i11checkinreg_i11reason;

CStringm_i11discount_i11kind;

CStringm_i11roomnumber;

CStringm_i11zhengjian;

CStringm_i11checkindate;

CStringm_i11alarmdate;

CStringm_i11alarmtime;

CStringm_i11checkintime;

CStringm_i11checkoutdate;

CStringm_i11checkouttime;

CStringm_i11checkdays;

CStringm_i11discountnumber;

CStringm_i11pre_i11handinmoney;

float sum_i11realmoney,sum_i11pregetmoney; Dialog Data

{{AFX_i11DATA(CReghandmoneydlg) enum { IDD = IDD_i11DIg_i11reggetmoney }; CListCtrlm_i11reghandmoney_i11list; CTimem_i11regmoneybegindate;

CTimem_i11regmoneybegintime;

CTimem_i11regmoneyenddate;

CTimem_i11regmoneyendtime;

floatm_i11show_i11pregetmoney;

floatm_i11show_i11shouldgetmoney;

CStringm_i11showuser;

}

}AFX_i11DATA

Overrides

ClassWizard generated virtual function overrides

{{AFX_i11VIRTUAL(CReghandmoneydlg)

protected:

virtual void DoDataExchange(CDataExchange pDX);

DDXDDV support

}}AFX_i11VIRTUAL

Implementation

protected:

Generated message map functions

{{AFX_i11MSG(CReghandmoneydlg)

virtual void OnOK();

virtual BOOL OnInitDialog();

}}AFX_i11MSG

DECLARE_i11MESSAGE_i11MAP()

};

{{AFX_i11INSERT_i11LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif !defined(AFX_i11REGHANDMONEYDLG_i11H_i119DB01E BD_i113947_i114D53_i11B66A_i11F5E762C763E8_i11INCLUDED_i1 1)

#if !defined(AFX_i11DAUDITING_i11H_i11692BCB4C_i11B7CD_i11 41BF_i11BBB6_i113882CBDF6C3E_i11INCLUDED_i11)

#define

AFX_i11DAUDITING_i11H_i11692BCB4C_i11B7CD_i1141BF_i11BB B6_i113882CBDF6C3E_i11INCLUDED_i11

#if _i11MSC_i11VER > 1000

#pragma once

#endif _i11MSC_i11VER > 1000

DAuditing.h : header file

#include "RxEdit.h"

#include "RxGrid.h"

CDAuditing dialog

class CDAuditing : public CDialog

{

Construction

public:

virtual void Init();

CDAuditing(CWnd pParent = NULL); standard constructor

Dialog Data

{

{AFX_i11DATA(CDAuditing)

enum { IDD = IDD_i11AUDITING };

RxEditm_i11EdtMan;

RxGridm_i11Grid;

RxEditm_i11EdtNoteID;

CButtonm_i11ButFind;

CButtonm_i11ButDiscard;

CButtonm_i11ButCheck;

}}AFX_i11DATA

Overrides

ClassWizard generated virtual function overrides {

{AFX_i11VIRTUAL(CDAuditing)

protected:

virtual void DoDataExchange(CDataExchange pDX); DDXDDV support

}}AFX_i11VIRTUAL

Implementation

protected:

Generated message map functions

{

{AFX_i11MSG(CDAuditing)

virtual void OnOK();

virtual void OnCancel();

virtual BOOL OnInitDialog();

virtual void OnButcheck();

virtual void OnButdiscard();

virtual void OnButfind();

}}AFX_i11MSG

DECLARE_i11MESSAGE_i11MAP() };

{

{AFX_i11INSERT_i11LOCATION }

}

用C#一步步写串口通信分析解析

我们来看具体的实现步骤。 公司要求实现以下几个功能: 1):实现两台计算机之前的串口通信,以16进制形式和字符串两种形式传送和接收。 2):根据需要设置串口通信的必要参数。 3):定时发送数据。 4):保存串口设置。 看着好像挺复杂,其实都是纸老虎,一戳就破,前提是你敢去戳。我尽量讲的详细一些,争取说到每个知识点。 在编写程序前,需要将你要测试的COM口短接,就是收发信息都在本地计算机,短接的方式是将COM口的2、3号针接起来。COM 口各针的具体作用,度娘是这么说的:COM口。记住2、3针连接一定要连接牢固,我就是因为接触不良,导致本身就不通,白白花掉了一大半天时间调试代码。 下面给出主要的操作界面,如下:

顺便,我将所有控件对应的代码名字也附上了,相信对初学者来说,再看下面的代码会轻松很多。控件名字命名的方法是“控件名+作用”的形式,例如“打开串口”的开关按钮,其名字是btnSwitch (btn就是button的简写了)。我认为这种命名控件的方式比较好,建议大家使用,如果你有好的命名方式,希望你能告诉我! 下面我们将各个功能按照从主到次的顺序逐个实现。(我分块给出代码实现,详细代码见链接:《C#串口通信工具》)

一、获取计算机的COM口总个数,将它们列为控件cbSerial的候选项,并将第一个设为cbSerial的默认选项。 这部分是在窗体加载时完成的。请看代码: (很多信息代码的注释里讲的很清楚,我就不赘述了。) [csharp]view plaincopyprint? 1.//检查是否含有串口 2. string[] str = SerialPort.GetPortNames(); 3. if (str == null) 4. { 5. MessageBox.Show("本机没有串口!", "Error"); 6. return; 7. } 8. 9. //添加串口项目 10. foreach (string s in System.IO.Ports.SerialPort.GetPortNames()) 11. {//获取有多少个COM口 12. cbSerial.Items.Add(s); 13. } 14. 15. //串口设置默认选择项

C语言串口通信助手代码

该程序全部由C写成没有C++ 更没用MFC 完全是自娱自乐给需要的人一个参考 #include "stdafx.h" #include #include "resource.h" #include "MainDlg.h" #include #include #include HANDLE hComm;//用于获取串口打开函数的返回值(句柄或错误值)OVERLAPPED m_ov; COMSTAT comstat; DWORD m_dwCommEvents;

TCHAR cRecs[200],cSends[100]; //接收字符串发送字符串 char j=0,*cCom; //接收用统计数据大小变量端口选择 BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose); } return FALSE; } /*系统初始化函数*/ BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { HWND hwndCombo1=GetDlgItem(hwnd,IDC_COMBO1); ComboBox_InsertString(hwndCombo1,-1,TEXT("COM1")); ComboBox_InsertString(hwndCombo1,-1,TEXT("COM2"));

VC与c51串口通讯程序

跟着步骤学习 1.建立项目:打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest 2.在项目中插入MSComm控件选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了), 这时在ClassView视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw 文件也一样),并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标 将此图标拖到对话框中,程序运行后,这个图标是看不到的。 3.利用ClassWizard定义CMSComm类控制对象打开ClassWizard ->Member Viariables选项卡,选择CSCommTestDlg类,为IDC_MSCOMM1 添加控制变量:m_ctrlComm,这时你可以看一看,在对话框头文件中自动 加入了//{{AFX_INCLUDES() #include "mscomm.h" //}}AFX_INCLUDES (这时运行程序,如果有错,那就再从头开始)。 4.在对话框中添加控件向主对话框中添加两个编辑框,一个用于接收显 示数据ID为IDC_EDIT_RXDATA,另一个用于输入发送数据,ID为 IDC_EDIT_TXDATA,再添加一个按钮,功能是按一次就把发送编辑框中的内 容发送一次,将其ID设为IDC_BUTTON_MANUALSEND。别忘记了将接收编辑 框的Properties->Styles中把Miltiline和Vertical Scroll属性选上,发送编辑框若你想输入多行文字,也可选上Miltiline。 再打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg类,为IDC_EDIT_RXDATA 添加CString变量m_strRXData,为IDC_EDIT_TXDATA添加CString变量m_strTXData。说明: m_strRXData和m_strTXData分别用来放入接收和发送的字符数据。 5.添加串口事件消息处理函数OnComm()打开ClassWizard->Message Maps,选择类CSCommTestDlg,选择IDC_MSCOMM1,双击消息OnComm,将弹出的对话框中将函数名改为OnComm,(好记而已)OK。 这个函数是用来处理串口消息事件的,如每当串口接收到数据,就会产生一个串口接收数据缓冲区中有字符的消息事件,我们刚才添加的函数就会执行,我们在OnComm()函数加入相应的处理代码就能实现自已想要的功能了。请你在函数中加入如下代码: void CSCommTestDlg::OnComm() { // TODO: Add your control notification handler code here VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed. CString strtemp; if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符 { ////////以下你可以根据自己的通信协议加入处理代码 variant_inp=m_ctrlComm.GetInput(); //读缓冲区 safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); //得到有效数据长度 for(k=0;k

C语言串口通信-源代码

#include #include #include #include #define COM232 0x2f8 #define COMINT 0x0b #define MaxBufLen 500 #define Port8259 0x20 #define EofInt 0x20 static int comportaddr; static char intvectnum; static unsigned char maskb; static unsigned char Buffer[MaxBufLen]; static int CharsInBuf,CircIn,CircOut; static void (interrupt far *OldAsyncInt)(); static void interrupt far AsyncInt(void); void Init_COM(int ComPortAddr, unsigned char IntVectNum, int Baud, unsigned char Data, unsigned char Stop, unsigned char Parity) { unsigned char High,Low; int f; comportaddr=ComPortAddr; intvectnum=IntVectNum; CharsInBuf=0;CircIn=0;CircOut=0; f=(Baud/100); f=1152/f; High=f/256; Low=f-High*256; outp(ComPortAddr+3,0x80); outp(ComPortAddr,Low); outp(ComPortAddr+1,High); Data=(Data-5)|((Stop-1)*4); if(Parity==2) Data=Data|0x18; else if(Parity==1) Data=Data|0x8; outp(ComPortAddr+3,Data);

串口通信

一. 实验目的及实验环境 <1>实验环境 Java eclipse下 <2>实验目的 了解串行通信的背景知识后,通过三线制制作一条串口通信线(PC-PC),并编程实现两台PC间通过RS-232C通信。要求两台PC机能进行实时的字符通信,并了解工业自动化控制中的基本通信方式。 二.实验内容 1、检查PC是否具有串行通信接口,并按其针脚类准备一条串口通信线缆。 2、串口包的安装,下载javacomm20-win32.zip并解压,将win32com.dll复制到\bin目录下;将comm.jar复制到\lib;把https://www.doczj.com/doc/384663096.html,m.properties 也同样拷贝到\lib目录下,再将上面提到的文件放到JRE相应的目录下就可以了。 三、方案设计 1、将实验所需RS-232缆线准备好,并将JAVA串口包复制到相应地目录下。 2、查找有关串口通信的书籍以及在网上查找相应地串口通信代码。 3、用JAVA编程软件JCreator编写代码。 四.测试数据及运行结果 图一主界面

图二发送消息 图三接收消息 五.总结 1、实验过程中遇到的问题及解决办法; 串口包的安装配置比较难完成,最后在网上看各种博客和论坛,才将问题解决。还有一些代码问题,最后找同学调试好了。 2、对设计及调试过程的心得体会。 通过本次串口实验,我对串口通信的知识了解的更透彻,这是在刚开始对串口通信知识不了解的情况下就编程而造成许多错误之后才得到的结果。在网上查找资料的时候也接触到了不少其他的编程语言例如VB,delphi,C#等,这也让我对这些从没有学过的语言有所了解,我想这些知识对以后的实验工作都有帮助。我也进一步发现了自己动手能力和自学能力都得到很多的进步,同时也对串口的发送与接收信息有了进一步的了解。 六.附录:源代码

VB串口通信程序代码

vb中怎样用mscomm控件实现串口通信 本问分两部分均来自https://www.doczj.com/doc/384663096.html, 第一部分jessezappy(晶晶) ================================================================================== If MSComm1.PortOpen Then MSComm1.PortOpen = False https://www.doczj.com/doc/384663096.html,mPort = 1 '假定是用COM1口 ' 设定传输速率等,可依照您的需求更改 MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = True '---------初始化Modem------------- MSComm1.Output = "ATZ" MSComm1.Output = "AT&F" MSComm1.Output = "ATE0" MSComm1.Output = "ATM1" MSComm1.Output = "ATQ0" MSComm1.Output = "ATV0" '--------------------------拨号------------- MSComm1.Output ="ATDT163" '拨163 '---------------------------接通后 MSComm1.Output ="SDFJDKSJLKFA" '发送字符串 '--------------------- Private Sub MSComm1_OnComm() '用串口事件捕捉数据.. If MSComm1.InBufferCount Then ' 通讯埠中假如有资料的话, 则读取进来 InStringB = InStringB & MSComm1.Input ' 如果资料中有Chr(13) 和Chr(10) 的话, 则显示出来 If InStr(InStringB, vbCrLf) Then instring = instring & InStringB AddText Text3, InStringB, False InStringB = "" End If End If END SUB

用SerialPort类设计串口通讯程序

使用SerialPort类设计串口通讯程 一.概述 输送带控制模块的核心技术是与PLC的串口通讯,在Visual Studio 6.0中编写串口通讯程序,一般都使用Microsoft Communication Control(简称MSComm)的通讯控件,只要通过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通讯。但在https://www.doczj.com/doc/384663096.html,技术广泛应用的今天,Visual https://www.doczj.com/doc/384663096.html,没有将此控件加入控件库,所以人们采用了许多方法在Visual https://www.doczj.com/doc/384663096.html,来编写串口通讯程序:第一种方法是通过采用Visual Studio 6.0中原来的MSComm控件这是最简单的,最方便的方法,但需要注册;第二种方法是采用微软在.NET推出了一个串口控件,基于.NET的P/Invoke调用方法实现;第三种方法是自己用API写串口通信,虽然难度高,但可以方便实现自己想要的各种功能。 现在微软推出了最新版本的Visual Studio 2005开发工具,可以不再采用第三方控件的方法来设计串口通讯程序。NET Framework 2.0类库包含了SerialPort类,方便地实现了所需要串口通讯的多种功能,为了使MSComm编程方法快速转换到以SerialPort类为核心的串口通讯的设计方法,这里着重讨论了Visual Studio 6.0的MSComm控件和SerialPort类设计方法的异同点。 二.SerialPort常用属性、方法和事件 1.命名空间 System.IO.Ports命名空间包含了控制串口重要的SerialPort类,该类提供了同步I/O 和事件驱动的I/O、对管脚和中断状态的访问以及对串行驱动程序属性的访问,所以在程序代码起始位置需加入Using System.IO.Ports。 2.串口的通讯参数 串口通讯最常用的参数就是通讯端口号及通讯格式(波特率、数据位、停止位和校验位),在MSComm 中相关的属性是CommPort和Settings。SerialPort类与MSComm有一些区别: 通讯端口号 [PortName]属性获取或设置通信端口,包括但不限于所有可用的COM 端口,请注意该属性返回类型为String,不是https://www.doczj.com/doc/384663096.html,mPort的short类型。通常情况下,PortName正常返回的值为COM1、COM2……,SerialPort类最大支持的端口数突破了CommPort控件中CommPort 属性不能超过16的限止,大大方便了用户串口设备的配置。 通讯格式 SerialPort类对分别用[BaudRate]、[Parity] 、[DataBits]、[StopBits]属性设置通讯格式中的波特率、校验位、数据位和停止位,其中[Parity]和[StopBits]分别是枚举类型Parity、StopBits,Parity 类型中枚举了Odd(奇)、Even(偶)、Mark、None、Space,Parity枚举了None、One、OnePointFive、Two。 SerialPort类提供了七个重载的构造函数,既可以对已经实例化的SerialPort对象设置上述相关属性的值,也可以使用指定的端口名称、波特率和奇偶校验位数据位和停止位直接初始化SerialPort 类的新实例。

C#中串口通信编程

本文将介绍如何在.NET平台下使用C#创建串口通信程序,.NET 2.0提供了串口通信的功能,其命名 空间是System.IO.Ports。这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信。 我们将使用标准的RS 232 C 在PC间通信。它工作在全双工模式下,而且我们不打算使用任何的握手或流控制器,而是使用无modem连接。 命名空间 System.IO.Ports命名空间中最重用的是SerialPort 类。 创建SerialPort 对象 通过创建SerialPort 对象,我们可以在程序中控制串口通信的全过程。 我们将要用到的SerialPort 类的方法: ReadLine():从输入缓冲区读一新行的值,如果没有,会返回NULL WriteLine(string):写入输出缓冲 Open():打开一个新的串口连接 Close():关闭 Code: //create a Serial Port object SerialPort sp = new SerialPort (); 默认情况下,DataBits 值是8,StopBits 是1,通信端口是COM1。这些都可以在下面的属性中重新设置: BaudRate:串口的波特率 StopBits:每个字节的停止位数量 ReadTimeout:当读操作没有完成时的停止时间。单位,毫秒 还有不少其它公共属性,自己查阅MSDN。

串口的硬件知识 在数据传输的时候,每个字节的数据通过单个的电缆线传输。包包括开始位,数据,结束为。一旦 开始位传出,后面就会传数据,可能是5,6,7或8位,就看你的设定了。发送和接收必须设定同样 的波特率和数据位数。 无猫模式 没有Modem模式的电缆只是简单地交叉传送和接收线。同样DTR & DSR, 和 RTS & CTS也需要交叉。RS232针图 这里,我们三条线。互连2和3(一段的2pin连接3pin),连接两端的5pin。 [示例程序] 主程序

51单片机与串口通信代码

51单片机与串口通信代码 2011年04月22日 17:18 本站整理作者:佚名用户评论(0) 关键字:串口通信(35) 串口调试 1. 发送:向总线上发命令 2. 接收:从总线接收命令,并分析是地址还是数据。 3. 定时发送:从内存中取数并向主机发送. 经过调试,以上功能基本实现,目前可以通过上位机对单片机进行实时控制。 程序如下: //这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收 //和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的 #i nclude #i nclude #i nclude #define INBUF_LEN 4 //数据长度 unsigned char inbuf1[INBUF_LEN]; unsigned char checksum,count3 , flag,temp,ch; bit read_flag=0; sbit cp=P1^1; sbit DIR=P1^2; int i; unsigned int xdata *RAMDATA; /*定义RAM地址指针*/ unsigned char a[6] ={0x11,0x22,0x33,0x44,0x55,0x66} ; void init_serialcomm(void) { SCON=0x50; //在11.0592MHz下,设置串行口波特率为9600,方式1,并允许接收

PCON=0x00; ES=1; TMOD=0x21; //定时器工作于方式2,自动装载方式 TH0=(65536-1000)%256; TL0=(65536-1000)/256; TL1=0xfd; TH1=0xfd; ET0=1; TR0=1; TR1=1; // TI=0; EA=1; // TI=1; RAMDATA=0x1F45; } void serial () interrupt 4 using 3 { if(RI) { RI=0; ch=SBUF; TI=1; //置SBUF空 switch(ch) { case 0x01 :printf("A"); TI=0;break; case 0x02 :printf("B"); TI=0;break; case 0x03 :printf("C"); TI=0;break;

串口通信代码

串口通信代码 TMSCOMN::~TMSCOMN() { if(hComs != INVALID_HANDLE_VALUE) { CloseHandle(hComs); hComs = INVALID_HANDLE_VALUE; } }; void TMSCOMN::CloseComs() { if(hComs != INVALID_HANDLE_VALUE) { CloseHandle(hComs); hComs = INVALID_HANDLE_VALUE; } }; AnsiString TMSCOMN::GetComError() { AnsiString Errors; if(ComReg==0) Errors = AnsiString("串口设备与串口工作良好"); else if(ComReg==1) Errors = AnsiString("串口未打开"); else Errors = AnsiString(" 串口设备与串口未连接上"); return Errors; }; void TMSCOMN::SetRs232Coms(int NoComs,int Bps) { AnsiString ComNo; DCB dcb; COMMTIMEOUTS TimeOuts; char str[100]; ComErr = AnsiString(""); if(hComs != INVALID_HANDLE_VALUE) { CloseHandle(hComs); hComs = INVALID_HANDLE_VALUE; } ComNo = AnsiString("COM")+AnsiString(NoComs+1);

串口通讯代码

using System; using System.Collections.Generic; using https://www.doczj.com/doc/384663096.html,ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; //导入串口的命名空间 namespace _01_SerialPort { public partial class Form1 : Form { public delegate void showReceiveDelegate(string text); //当采用响应模式,应申明一个委托,实现不同线程的控件实验 SerialPort com = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One);//初始化构造函数 public Form1() { InitializeComponent(); } ///

///窗体加载 /// /// /// private void Form1_Load(object sender, EventArgs e) { cmbPort.SelectedIndex = 0; cmbBaudRate.SelectedIndex = 0; cmbDataBits.SelectedIndex = 0; cmbStopBits.SelectedIndex = 0; cmbParity.SelectedIndex = 0; } /// ///串口打开与关闭 /// /// /// private void btnOpen_Click(object sender, EventArgs e) { if (btnOpen.Text == "打开串口") { try { if (!com.IsOpen) { com.PortName = cmbPort.Text; com.BaudRate = int.Parse(cmbBaudRate.Text); com.DataBits = int.Parse(cmbDataBits.Text); switch (cmbStopBits.SelectedIndex) { case 0: com.StopBits = StopBits.One; break; case 1: com.StopBits = StopBits.Two; break;

串口通信Verilog代码

Verilog串口通信代码 module ck(clk,rst_n,rs232_rx,rs232_tx); input clk; // 50MHz主时钟 input rst_n; //低电平复位信号 input rs232_rx; // RS232接收数据信号 output rs232_tx; // RS232发送数据信号 wire bps_start; //接收到数据后,波特率时钟启动信号置位 wire clk_bps; // clk_bps的高电平为接收或者发送数据位的中间采样点 wire[7:0] rx_data; //接收数据寄存器,保存直至下一个数据来到 wire rx_int; //接收数据中断信号,接收到数据期间始终为高电平 //---------------------------------------------------- speed_select speed_select( .clk(clk), //波特率选择模块,接收和发送模块复用,不支持全双工通信 .rst_n(rst_n), .bps_start(bps_start), .clk_bps(clk_bps) ); my_uart_rx my_uart_rx( .clk(clk), //接收数据模块 .rst_n(rst_n), .rs232_rx(rs232_rx), .clk_bps(clk_bps), .bps_start(bps_start), .rx_data(rx_data), .rx_int(rx_int) ); my_uart_tx my_uart_tx( .clk(clk), //发送数据模块 .rst_n(rst_n), .clk_bps(clk_bps), .rx_data(rx_data), .rx_int(rx_int), .rs232_tx(rs232_tx), .bps_start(bps_start) ); endmodule module speed_select(clk,rst_n,bps_start,clk_bps);

c#上位机串口通信助手源代码详解

c#上位机串口通信助手源代码实例详解一、功能 1软件打开时,自动检测有效COM端口 2 软件打开时,自动复原到上次关闭时的状态 3 不必关闭串口,即可直接进行更改初始化设置内容(串口号、波特率、数据位、 停止位、校验位),可按更改后的信息自动将串口重新打开 4 可统计接收字节和发送字节的个数 5 接收数据可按16进制数据和非16进制数据进行整体转换 6 可将接收到数据进行保存 7 可设置自动发送,发送时间可进行实时更改 8可按字符串、16进制字节、文件方式进行发送,字符串和16进制字节可分别进行存储,内容互不干扰 9 按16进制发送时,可自动校验格式,不会输错 10 可清空发送或接收区域的数据 二、使用工具 Visual Studio2015 三、程序详解 1 界面创建

图1 用winform创建如图1所示界面,控件名字分别为: 端口号:cbxCOMPort波特率:cbxBaudRate 数据位:cbxDataBits停止位:cbxStopBits 校验位:label5打开串口按钮:btnOpenCom 发送(byte):tbSendCount接收(byte):tbReceivedCount 清空计数按钮:btnClearCount按16进制显示:cb16Display 接收区清空内容按钮:btnClearReceived保存数据按钮:btnSaveFile 接收数据框:tbReceivedData发送数据框:tbSendData 自动发送:cbAutomaticSend间隔时间:tbSpaceTime 按16进制发送:cb16Send发送区清空内容按钮:btnClearSend 读入文件按钮:btnReadFile发送按钮:btnSend 2 创建一个方法类 按Ctrl+shift+A快捷键创建一个类,名字叫Methods,代码为:

C#结合串口通信类实现串口通信源代码

mycom是串口通信类,在本blog前一篇中有完整代码。(C#串口通信编程类(修改版)) 下面是串口通讯测试程序的源代码,将mycom类放在此项目中 可以实现简单的串口通信,希望读者能通过这个程序对串口通信过程有一个初步的了解: usingSystem; usingSystem.Drawing; usingSystem.Collections; https://www.doczj.com/doc/384663096.html,ponentModel; usingSystem.Windows.Forms; usingSystem.Data; usingSystem.Threading; namespaceBusApp { ///

///Form1的摘要说明。 /// publicclassForm1:System.Windows.Forms.Form { https://www.doczj.com/doc/384663096.html,bellabel1; https://www.doczj.com/doc/384663096.html,bellabel2; privateSystem.Windows.Forms.Buttonbutton1; privateSystem.Windows.Forms.GroupBoxgroupBox1; https://www.doczj.com/doc/384663096.html,bellabel3; https://www.doczj.com/doc/384663096.html,bellabel4; https://www.doczj.com/doc/384663096.html,bellabel5; https://www.doczj.com/doc/384663096.html,bellabel6; privateSystem.Windows.Forms.Buttonbutton2; privateSystem.Windows.Forms.Buttonbutton3; privateSystem.Windows.Forms.Buttonbutton4; privateSystem.Windows.Forms.TextBoxtextBox8; https://www.doczj.com/doc/384663096.html,bellabel7; publicintiPort=1;//1,2,3,4 publicintiRate=9600;//1200,2400,4800,9600 publicbytebSize=8;//8bits publicbytebParity=0;//0-4=no,odd,even,mark,space publicbytebStopBits=1;//0,1,2=1,1.5,2 publicintiTimeout=1000; publicmycommycom1=newmycom(); publicbyte[]recb; privateSystem.Windows.Forms.TextBoxmsg; privateSystem.Windows.Forms.TextBoxt_port; privateSystem.Windows.Forms.TextBoxt_rate; privateSystem.Windows.Forms.TextBoxt_bytesize; privateSystem.Windows.Forms.TextBoxt_stopbyte;

51单片机串口通信,232通信,485通信,程序

51单片机串口通信,232通信,485通信,程序代码1:232通信 #include<> #define uchar unsigned char #define uint unsigned int uchar flag,a,i; uchar code table[]="i get"; void init() { TMOD=0X20; TH1=0XFD; TH0=0XFD; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; } void main() { init();

while(1) { if(flag==1) { ES=0; for(i=0;i<6;i++) { SBUF=table[i]; while(!TI); TI=0; } SBUF=a; while(!TI); TI=0; ES=1; flag=0; } } } void ser() interrupt 4 {

RI=0; a=SBUF; flag=1; } 代码2:485通信 #include<> #include"" #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i; uchar code table[]="i get "; void init() { TMOD=0X20; TH1=0Xfd; TL1=0Xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1;

} void main() { init_1602(); init(); while(1) { if(flag==1) { display(0,a); } } } void ser() interrupt 4 { RI=0; a=SBUF; flag=1; }

C语言串口通信助手代码

该程序全部由C写成没有C++更没用MFC 完全是自娱自乐给需要的人一个参考 #include "stdafx.h" #include #include "resource.h" #include "MainDlg.h" #include #include #include HANDLE hComm;/用于获取串口打开函数的返回值(句柄或错误值) OVERLAPPED m_ov; COMSTAT comstat; DWORD m_dwCommEvents; TCHAR cRecs[200],cSends[100]; 接//收字符串发送字符串 char j=0,*cCom; //接收用统计数据大小变量端口选择 BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam,LPARAM lParam) { switch(uMsg) { HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose); }

return FALSE; } /* 系统初始化函数*/ BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAMlParam) { HWND hwndCombo1=GetDlgItem(hwnd,IDC_COMBO1); ComboBox_InsertString(hwndCombo1,-1,TEXT("COM1")); ComboBox_InsertString(hwndCombo1,-1,TEXT("COM2")); ComboBox_InsertString(hwndCombo1,-1,TEXT("COM3")); ComboBox_InsertString(hwndCombo1,-1,TEXT("COM4")); ComboBox_InsertString(hwndCombo1,-1,TEXT("COM5")); ComboBox_SetCurSel(hwndCombo1,0); void CALLBACK TimerProc (HWND hwnd, UINT message, UINT iTimerID,DWORD dwTime); SetTimer(hwnd,1,1000,TimerProc); return TRUE; } /* 监视串口错误时使用的函数*/ boolProcessErrorMessage(char* ErrorText) char *Temp = new char[200]; LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |

51单片机与串口通信代码

51单片机与串口通信代码 作者:佚名来源:本站原创点击数: 9407 更新时间:2007年06月17日【字体:大中小】 1. 发送:向总线上发命令 2. 接收:从总线接收命令,并分析是地址还是数据。 3. 定时发送:从内存中取数并向主机发送. 经过调试,以上功能基本实现,目前可以通过上位机对单片机进行实时控制。 程序如下: //这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收 //和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的 #i nclude #i nclude #i nclude #define INBUF_LEN 4 //数据长度 unsigned char inbuf1[INBUF_LEN]; unsigned char checksum,count3 , flag,temp,ch; bit read_flag=0; sbit cp=P1^1; sbit DIR=P1^2; int i; unsigned int xdata *RAMDATA; /*定义RAM地址指针*/ unsigned char a[6] ={0x11,0x22,0x33,0x44,0x55,0x66} ; void init_serialcomm(void) { SCON=0x50; //在11.0592MHz下,设置串行口波特率为9600,方式1,并允许接收 PCON=0x00; ES=1; TMOD=0x21; //定时器工作于方式2,自动装载方式 TH0=(65536-1000)%256; TL0=(65536-1000)/256; TL1=0xfd; TH1=0xfd; ET0=1; TR0=1; TR1=1; // TI=0; EA=1; // TI=1; RAMDATA=0x1F45;

RS-232串口通信程序设计

RS-232串口通信程序设计 实验要求: 用TC对计算机的串口进行编程,并作一个简单的串口查询通讯程序。 实验方案: 用RS-232串口通讯线将两台计算机A、B的串口相连。 实验步骤: 1、首先对计算机串口通讯控制芯片8250的控制寄存器进行初始化和设置; 2、对计算机B的串口发送一个数据前,查询计算机A的串口的发送移位寄存器是否为空,如果是则发送数据,如果为否则继续查询,直到条件成立;执行完发送指令后,再次查询计算机A的口的发送移位寄存器是否为空,如果是则结束发送;如果为否,则继续查询,直到条件成立。 3、从计算机A的串口接受刚才从计算机B的串口发送的数据前,先查询计算机A的口的接收数据标志位是否为1,如果是则表示计算机A的口接收数据准备就绪,执行接收指令,即从计算机A的口读入数据,若否则表示没有准备好接收,继续查询计算机A的口的接收数据标志位,直到为1;接收完数据后,再次查询计算机A的串口的接受寄存器是否为空的标志位的状态,如果为1则程序转入计算机B的串口的数据发送程序;如果否,则继续查询等待,直到接收。 实验内容: 1.在COMDEBUG中针对串口通信各寄存器进行设置,掌握各寄存器在串口通信中 的作用及各参数的含义。 Com1口中的10各可编程寄存器 地址寄存器名称备注3F8H 发送保持寄存器(THR)DLAB=0 3F8H 接收缓冲寄存器(RBR)DLAB=0 3F8H 波特率因子寄存器[低](DLL)DLAB=1 3F9H 波特率因子寄存器[高](DLM)DLAB=1 3F9H 中断允许寄存器(IER)DLAB=0 3FAH 中断识别寄存器(IIR) 3FBH 线路控制寄存器(LCR) 3FCH Modem控制寄存器(MCR) 3FDH 线路状态寄存器(LSR) 3FEH Modem状态寄存器(MSR) 注:com1口的基地址为:3F8; com2口的基地址为:2F8。 在上表中,10个可编程寄存器,使用了7个地址,其中部分寄存器共用一个地址,由DLAB=0/1来区分,在DLAB=1,用于设定通讯所需的波特率; 8250的控制寄存器控制/状态字: 1)接收缓冲寄存器(RBR)和发送保持寄存器(THR) RBR暂存从线路上接收到的有效字符,等待本地读取。THR暂存等待发向线路的数据。它们共用同意I/O地址,在半双工工作环境下,互不干扰。 2)中断识别寄存器(IIR)和中断允许寄存器(IER)

相关主题
文本预览
相关文档 最新文档