c++ mfc编程 如何添加serialport控件

c++ mfc编程 如何添加serialport控件,第1张

在窗体上点右键,出现菜单,添加控件,找到 serialport 完成

添加串口主要有以下携腔几个参数:

1.串口名称(PortName)

2.波特率(BaudRate)

3.数据位(DataBits)

4.奇偶辩模衫效应(Parity)

5.停止位码桥(StopBits)

1 using System

2 using System.Collections.Generic

3 using System.Linq

4 using System.Text

5 using System.Windows

6 using System.Windows.Controls

7 using System.Windows.Data

8 using System.Windows.Documents

9 using System.Windows.Input

10 using System.Windows.Media

11 using System.Windows.Media.Imaging

12 using System.Windows.Navigation

13 using System.Windows.Shapes

14 using System.IO.Ports

15

16 namespace CsharpComm

17 {

18 /// <summary>

19 /// Window1.xaml 的交互逻辑

20 /// </summary>

21 public partial class Window1 : Window

22 {

23 public Window1()

24 {

25 InitializeComponent()

26 }

27

28 //定义 SerialPort对象

29 SerialPort port1

30

31 //初始化SerialPort对象方法.PortName为COM口名称,例如"COM1","COM2"等,注意是string类型

32 public void InitCOM(string PortName)

33 {

34 port1 = new SerialPort(PortName)

35 port1.BaudRate = 9600//波特率

36 port1.Parity = Parity.None//无奇偶校验位

37 port1.StopBits = StopBits.Two//两个停止位

38 port1.Handshake = Handshake.RequestToSend//控制协议

39 port1.ReceivedBytesThreshold = 4//设置 DataReceived 事件发生前内部输入缓冲区中的字节数

40 port1.DataReceived += new SerialDataReceivedEventHandler(port1_DataReceived)//DataReceived事件委托

41 }

42

43 //DataReceived事件委托方法

44 private void port1_DataReceived(object sender, SerialDataReceivedEventArgs e)

45 {

46 try

47 {

48 StringBuilder currentline = new StringBuilder()

49 //循环接收数据

50 while (port1.BytesToRead >0)

51 {

52 char ch = (char)port1.ReadByte()

53 currentline.Append(ch)

54 }

55 //在这里对接收到的数据进行处理

56 //

57 currentline = new StringBuilder()

58 }

59 catch(Exception ex)

60 {

61 Console.WriteLine(ex.Message.ToString())

62 }

63

64 }

65

66 //打开串口的方法

67 public void OpenPort()

68 {

69 try

70 {

71 port1.Open()

72 }

73 catch { }

74 if (port1.IsOpen)

75 {

76 Console.WriteLine("the port is opened!")

77 }

78 else

79 {

80 Console.WriteLine("failure to open the port!")

81 }

82 }

83

84 //关闭串口的方法

85 public void ClosePort()

86 {

87 port1.Close()

88 if (!port1.IsOpen)

89 {

90 Console.WriteLine("the port is already closed!")

91 }

92 }

93

94 //向串口发送数据

95 public void SendCommand(string CommandString)

96 {

97 byte[] WriteBuffer = Encoding.ASCII.GetBytes(CommandString)

98 port1.Write(WriteBuffer, 0, WriteBuffer.Length)

99 }

100

101 //调用实例

102 private void btnOpen_Click(object sender, RoutedEventArgs e)

103 {

104 //我现在用的COM1端口,按需要可改成COM2,COM3

105 InitCOM("COM1")

106 OpenPort()

107 }

108 }

109 }

建立MFC单文档,定禅祥义View类的成员变量CButton m_button,在***View类中添加OnCreate 或OnInitialUpdate 函数,并在函数中加入

CRect rect_button(40,10,200,60)//控制按钮核庆大小、位置

m_button.Create("hello",WS_CHILD|WS_VISIBLE|WS_BORDER,rect_button,this,IDC_DYNAMICBUTTON)

m_button.ShowWindow(SW_SHOWNORMAL)

将IDC_DYNAMICBUTTON添加至resource.h中

这样按钮应该都可以显示出来贺氏搏了。

资源伏慧编游皮辑器里你照样拖,在头文件里包含你的缺磨答CMyButton.h头文件,用你自己的类定义一个成员变量,并在实现文件中将这个变量和资源中的ID对应起来

以CButtonST为例

在.h中包含CButtonST类头文件,并定义一个成员变量

CButtonST m_btnTest

在.CPP文件中将成员变量和资源中的控件关联

void CXXXDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX)

DDX_Control(pDX, IDC_BTN_TEST, m_btnTest)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11996188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存