Serial Programming
Serial Programming
Serial Programming
//MyForm.cpp
#include "MyForm.h"
using namespace System;
using namespace System::Windows::Forms;
[STAThread]
int main(array<String^>^ args) {
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
VCSerialPort::MyForm form;
Application::Run(%form);
}
//MyForm.h
#pragma once
namespace VCSerialPort {
/// <summary>
/// Summary for MyForm
/// </summary>
public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
public: String^ datain;
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~MyForm()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::TextBox^ tbSend;
private: System::Windows::Forms::TextBox^ tbReceive;
protected:
private: System::Windows::Forms::Button^ btSend;
private: System::Windows::Forms::Button^ btExit;
private: System::IO::Ports::SerialPort^ serialPort1;
private: System::Windows::Forms::Label^ label1;
private: System::ComponentModel::IContainer^ components;
protected:
private:
/// <summary>
/// Required designer variable.
/// </summary>
}
#pragma endregion
}
private: System::Void btSend_Click(System::Object^ sender,
System::EventArgs^ e)
{
serialPort1->Write(tbSend->Text);
}
private: System::Void DisplayText(System::Object^ sender,
System::EventArgs^ e) {
tbReceive->Text=(datain);
}
private: System::Void serialPort1_DataReceived(System::Object^
sender, System::IO::Ports::SerialDataReceivedEventArgs^ e)
{
datain = serialPort1->ReadExisting();
this->Invoke(gcnew EventHandler(this, &MyForm::DisplayText));
}
private: System::Void btExit_Click(System::Object^ sender,
System::EventArgs^ e)
{
serialPort1->Close();
this->Close();
}
};
}
}
}
else
{
int number = ComPort.BytesToRead;
byte[] buffer = new byte[number];
ComPort.Read(buffer, 0, number);
String data = BitConverter.ToString(buffer);
//Show received Hex in Rich Text box
BeginInvoke(new SetTextCallback(SetText), new object[]
{ data });
//Show first byte in TextBox tbDec
int firstbyte = buffer[0];
BeginInvoke(new SetTextCallback(SetTextBox), new
object[] { firstbyte.ToString( )});
//Show 8 bits in color of Labels
int i;
for (i = 7; i >= 0; i--)
{
byte a = buffer[0];
byte c = (byte)(Math.Pow(2, i));
if ((a & c) == c)
lamp[i].BackColor =
System.Drawing.Color.Green;
else
lamp[i].BackColor =
System.Drawing.Color.Red;
}
}
}
private void SetTextBox(string num)
{
tbDec.Text = num;//Show string in TextBox
}
private void SetText(string text)
{
//Show received Data in Rich Text Box
ReceiveData.Text += text + "\n";//Show string in TextBox
}
private void btSend_Click(object sender, EventArgs e)
{
if (!rbHex.Checked == true)
try
{
tbNumber.Text = "";
ComPort.Write(txtSend.Text);
}
catch
{ }
else
{
try
{
byte[] data = StringToByteArray(txtSend.Text);
ComPort.Write(data, 0, data.Length);
}
catch
{ }
}
}
}
C# ĐƠN GIẢN MÔ PHỎNG KẾT NỐI PC PIC RS232 ĐIỀU KHIỂN HAI LED
Project Project_Comport1
//Use serialPort on ToolBox
using System;
using System.Windows.Forms;
using System.IO.Ports;
namespace Project_Comport1
{
public partial class Form1 : Form
{
}
else
{
MessageBox.Show("Bạn chưa mở cổng COM");
}
}
}
}
#include <16f877a.h>
#fuses HS,NOWDT,NOPROTECT,BROWNOUT,PUT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
//============================
void main()
{
char c;
Set_tris_D(0x00);
Output_D(0xFF);
while(1)
{
c = getc();
if(c=='0')
{
output_d(0b11111111);
}
if(c=='1')
{
output_d(0b11111110);
}
if(c=='2')
{
output_d(0b11111101);
}
if(c=='3')
{
output_d(0b11111100);
}
}
}
TRUYỀN FILE GIỮA HAI MÁY
Truyền file giữa hai máy dùng cổng COM bây giờ ít dùng nhưng
nghiên cứu lập trình cũng khá lý thú. Phân biệt truyền file text và
file binary, cài đặt WriteBufferSize và ReadBufferSize đến giá trị
tối đa mong muốn (số chẵn), mặc định là 2048.Cần phải sử dụng kiểu
bắt tay để điều khiển luồng dữ liệu.
Chọn file Text,có đuôi txt,c,…, lưu tên file vào TextBox và
hiển thị nội dung file vào RichTextBox
//Created by Nguyen Duc Thanh
using System;
using System.Windows.Forms;
namespace FileTrasferCS
{
public partial class Form1 : Form
{
delegate void SetTextCallback(string text);
String data;
public Form1()
{
InitializeComponent();
}
serialPort1.Write(System.IO.File.ReadAllText(this.tbFileSend.Text));
label1.Text = "Send Completed";
}
}
}
}
}