vs2010串口编程
‘壹’ 怎么在VS2010中添加串口通信程序开发控件!本人菜鸟,对这个开发工具不熟悉!
第一次使用Dex控件开发Winfrogm程序,现在遇到RibbonMain主窗体的顶部菜单默认隐藏,点击ribbon才显示。这样可以节约界面空间。但是找不到设置地方。而且是在其他人坐的winform程序上有这种效果的。
‘贰’ 谁做过 vs2010 c# WindowsForms下的 串口通信
using UnityEngine;
using System.Collections;
using System;
using System.IO.Ports;
using System.Threading;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices;
using System.IO;
using System.Diagnostics;
public class planeControl2 : MonoBehaviour
{
private static SerialPort _serialPort;
static bool _dataIsOK = false;
private static Vector3 _eulerAngles = new Vector3(0, 0, 0);
public string portName = "COM6";
public int baudrate = 115200;
GameObject plane;
Thread readThread = new Thread(Read);
Thread _scmd = new Thread(_cmd);
static ProcessStartInfo _Log = new ProcessStartInfo("cmd.exe");
private static StreamReader reader;
private static Process p;
static StreamWriter stdlog;
static bool isopen = false;
public static void _cmd(){
while(true){
if (p == null)
{
p = Process.Start(_Log);
StreamWriter stdlog = p.StandardInput;
}
//Console.ReadLine();
if(p.StandardOutput!=null){
p.StandardOutput.ReadLine();
// p.StandardInput.WriteLine("ssss");
}
// string str = _scmd..ReadLine();
}
}
// Use this for initialization
// start.UseShellExecute = false;
void Start()
{
_Log.RedirectStandardInput = true;
_Log.RedirectStandardOutput = true;
_Log.UseShellExecute = false;
_Log.FileName = "cmd.exe";
_scmd.Start();
stdlog.WriteLine("hello");
_serialPort = new SerialPort(portName, baudrate, Parity.None, 8, StopBits.One);
_serialPort.ReadTimeout = 500;
try
{
_serialPort.Open();
}
catch (Exception)
{
//Debug.Log(e);
}
readThread.Start();
plane = GameObject.FindWithTag("plane");
}
// Update is called once per frame
void Update()
{
if (_dataIsOK)
{
plane.transform.localRotation = Quaternion.Slerp(Quaternion.Euler(plane.transform.eulerAngles), Quaternion.Euler(_eulerAngles), (float)0.4 * Time.time);
_dataIsOK = false;
}
}
void OnGUI()
{
//_serialPort.Close();
string str = "";
// GUI.TextField
str = GUILayout.TextField(str, 20);
GUI.Label(new Rect(20, 20, 50, 20), "用户名");
string userName = "", userPassword = "", info = "";
userName = GUI.TextField(new Rect(80, 20, 100, 20), userName, 15);//15为最大字符串长度
//密码
GUI.Label(new Rect(20, 50, 50, 20), "密 码");
userPassword = GUI.PasswordField(new Rect(80, 50, 100, 20), userPassword, '*');//'*'为密码遮罩
//信息
GUI.Label(new Rect(20, 100, 100, 20), info);
//登录按钮
if (GUI.Button(new Rect(80, 80, 50, 20), "登录"))
{
if (userName == "zuoyamin" && userPassword == "123")
{
info = "登录成功!";
}
else
{
info = "登录失败!";
}
}
}
public static void Read()
{
while (true)
{
try
{
string message = _serialPort.ReadLine();
MatchCollection mc = Regex.Matches(message, @"-?([1-9]d*|0(?!.0+$)).d+");
float[] strdatafloat = new float[4];
int i = 0;
foreach (object m in mc)
{
if (i > 2)
{
//Debug.Log("Error! i>2");
}
else
{
strdatafloat[i] = (float)Convert.ToDouble(m.ToString());
//Debug.Log(m.ToString());
}
i++;
}
if (_dataIsOK == false)//update已经成功处理数据
{
_eulerAngles = new Vector3(strdatafloat[0], strdatafloat[1], strdatafloat[2]);
_dataIsOK = true;
}
}
catch (TimeoutException)
{
//Debug.Log(e);
}
}
}
void OnApplicationQuit()
{
p.Close();
_scmd.Abort();
readThread.Abort();
_serialPort.Close();
}
}
ps:这是在我的unity里用C#写的代码,负责将串口的数据解析,原理是双线程,一个线程负责读取,一个负责渲染,至于你说的怎么写,建议关注msdn上的serialport类的描述
‘叁’ visual studio 2010 或者2013 串口通信 使用serialport的具体操作
楼主用的什么语言?C还是C#来编写,C语言里面应该是叫CSerialPort类,C#里面是在 System.IO.Ports::SerialPort。
可以参考一下MSDN的C#说明,https://msdn.microsoft.com/zh-cn/library/system.io.ports.serialport.aspx
‘肆’ VS2010基于C#编写的窗体应用程序,串口读取数据,转换为到text.box里显示,如何实现实时
有一个datareceive事件 可以检测接收数据时触发. 触发后读取即可.
一般来说,理论就是上面这样处理.
‘伍’ 你好,请问你在vs2010中使用SerialPort类进行串口通信编程实现了没有啊我现在做这个,不知道该怎么做
.net 后 微软 的 mscomm 控件 改名 为 serialport
用 这个 试试
‘陆’ 我用C#语言在vs2010中编写了一个串口接收数据的程序,程序可以正常运行,可是运行大概几分钟电脑就
没代码怎么看?
‘柒’ 如何在Vs2010基于MFC下,编写代码,强行占用【串口】
这可能是USB线的原因,接触不良,或者由此引起的驱动崩溃,从应用代码来说,无法修复的,类似根基烂了,只能重建。
‘捌’ vs2010中调用什么函数才能得到串口数据
可以用 serialport 组件
‘玖’ 如何利用vs2010 mfc 界面编程一个串口通信
.net的SerialPort在System.IO命名空间中,很好用的。
界面的设计可以参考现有的软件
像格西烽火、串口调试助手等都不错。
‘拾’ 用vs2010编写comm的串口程序已经编译成功了,为什么不能接收
初始化 加上 m_cComm.inputmode(1);1表示以2进制传输.