第一个问题我以前写过,不过是vb的,你模仿一下就可以,主要原理是读注册表。
------------------------------
Public Sub GetCommPortInfo(udtArr() As CommInfo)
Dim hKey As Long
Dim lCount As Long
Dim strName As String
Dim strData As String
Dim lRetName As Long
Dim lRetData As Long
Dim strValName As String
Dim strValTemp As String
Dim lValType As Long
Dim lResult As Long
Dim bFirst As Boolean
bFirst = True
'Open a registry key
If RegOpenKey(HKEY_LOCAL_MACHINE, "Hardware\DeviceMap\SerialComm", hKey) = 0 Then
'initialize
strName = Space(BUFFER_SIZE)
strData = Space(BUFFER_SIZE)
lRetName = BUFFER_SIZE
lRetData = BUFFER_SIZE
'enumerate the values
While RegEnumValue(hKey, lCount, strName, lRetName, 0, REG_SZ, ByVal strData, lRetData) <> ERROR_NO_MORE_ITEMS
'show data
If lRetData > 0 Then
'prepare for next value
If (Not bFirst) Then ReDim Preserve udtArr(UBound(udtArr) + 1)
If bFirst Then bFirst = False
'build the return array
udtArr(UBound(udtArr)).strPortName = Left(strData, lRetData)
udtArr(UBound(udtArr)).nPortNo = lCount + 1
lCount = lCount + 1
strName = Space(BUFFER_SIZE)
strData = Space(BUFFER_SIZE)
lRetName = BUFFER_SIZE
lRetData = BUFFER_SIZE
End If
Wend
'Close the registry key
RegCloseKey hKey
Else
MsgBox "Error while calling RegOpenKey", vbOKOnly, "Error"
End If
End Sub
------------------------------
------------------------------
Public Sub GetCommPortInfo(udtArr() As CommInfo)
Dim hKey As Long
Dim lCount As Long
Dim strName As String
Dim strData As String
Dim lRetName As Long
Dim lRetData As Long
Dim strValName As String
Dim strValTemp As String
Dim lValType As Long
Dim lResult As Long
Dim bFirst As Boolean
bFirst = True
'Open a registry key
If RegOpenKey(HKEY_LOCAL_MACHINE, "Hardware\DeviceMap\SerialComm", hKey) = 0 Then
'initialize
strName = Space(BUFFER_SIZE)
strData = Space(BUFFER_SIZE)
lRetName = BUFFER_SIZE
lRetData = BUFFER_SIZE
'enumerate the values
While RegEnumValue(hKey, lCount, strName, lRetName, 0, REG_SZ, ByVal strData, lRetData) <> ERROR_NO_MORE_ITEMS
'show data
If lRetData > 0 Then
'prepare for next value
If (Not bFirst) Then ReDim Preserve udtArr(UBound(udtArr) + 1)
If bFirst Then bFirst = False
'build the return array
udtArr(UBound(udtArr)).strPortName = Left(strData, lRetData)
udtArr(UBound(udtArr)).nPortNo = lCount + 1
lCount = lCount + 1
strName = Space(BUFFER_SIZE)
strData = Space(BUFFER_SIZE)
lRetName = BUFFER_SIZE
lRetData = BUFFER_SIZE
End If
Wend
'Close the registry key
RegCloseKey hKey
Else
MsgBox "Error while calling RegOpenKey", vbOKOnly, "Error"
End If
End Sub
------------------------------
解决方案 »
- C#打开一个EXCEl文件时如何读取excel文件的表名?
- 小知识点散小分
- 事件相关的问题
- dotnet2.0数据集中数据库连接字符串默认都是在config文件存放的,怎么样在程序动态改变这个ConnectionString?
- C# WEB中的HttpContext.Current.Response.Write与Response.Write有什么区别
- 如何为listview的列添加图片
- 急,获取路径读取文件后并合并c#
- 在BS里,遍历一个文件夹DOC1,看是否存在文件夹DOC2,如果有则将DOC2及其所属文件COPY到网页程序所在的文件夹下?如何实现。DOC1为物理路
- 关于ProgressBar 问题!在线等待!
- VS.net发布会
- 插入数据后表就打不开了---看来只有高手能回答了
- 窗体控件开发
button中,调用一个自定义函数,参数为combox的选项序号,如:
public void Init(int ComboxIndex)
不知道行不行
{
try
{
int count = serial.Count;
if (count < 8)
{
SerialPort serialport = new SerialPort();
serialport.PortName = port;
serialport.Parity = parity;
serialport.BaudRate = baudrate;
serialport.DataBits = databits;
serialport.StopBits = stopbits;
serialport.ReadBufferSize = 64; ;
serialport.Open();
MessageBox.Show("初始化成功:该串口已经打开!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
serial.Add(serialport); // ArrayList serial = new ArrayList()存放的串口对象,这样能不能那得出来各个串口啊?
}
}
catch (Exception Err)
{
MessageBox.Show("初始化失败:" + Err.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
public void Init(int ComboxIndex)
不就是判断一个string么?
Serialini(string port, System.IO.Ports.Parity parity, int baudrate, int databits, System.IO.Ports.StopBits stopbits) 中的string port是不是就可以判断了?这个string来自combox。我用serial.Add(serialport);
// ArrayList serial = new ArrayList()存放的串口对象,这样能不能拿出来串口使用啊?