问题描述
- win7通过串口连接linux外设后,如何登录root用户?
-
我想自己做一个MFC小工具,功能可以概括为"简易版secureCRT";
现在串口已经通过CreateFile()连接成功,超时、奇偶校验、波特率这些设置貌似也没有问题了。
接下来,我如何得到linux的login:和password:提示符并把用户名root和密码发出去?如何远程打开一个终端从而可以向内核发送linux命令(比如ls、cd这些)?
贴上部分代码吧:BOOL Cserial_comm_win_1Dlg::OnInitDialog(){ CDialogEx::OnInitDialog(); // TODO: 在此添加额外的初始化代码 hCom=CreateFile(_T("\\.\COM19"), //COM1口 GENERIC_READ|GENERIC_WRITE, //允许读和写 0, //独占方式 NULL, //引用安全性属性结构,缺省值为NULL OPEN_EXISTING, //打开而不是创建 0, //同步方式 0 NULL); if(hCom==(HANDLE)-1){ AfxMessageBox(_T("打开COM失败!")); return FALSE; } SetupComm(hCom,1024,1024); //输入缓冲区和输出缓冲区的大小都是1024 COMMTIMEOUTS TimeOuts; //设定读超时 TimeOuts.ReadIntervalTimeout=MAXDWORD; //在读一次输入缓冲区的内容后读操作就立即返回,而不管是否读入了要求的字符。 TimeOuts.ReadTotalTimeoutMultiplier=0; TimeOuts.ReadTotalTimeoutConstant=0; //设定写超时 TimeOuts.WriteTotalTimeoutMultiplier=100; TimeOuts.WriteTotalTimeoutConstant=500; SetCommTimeouts(hCom,&TimeOuts); //设置超时 DCB dcb; GetCommState(hCom,&dcb); dcb.BaudRate=115200; //波特率为9600 !!!!!!!!!!!! dcb.ByteSize=8; //每个字节有8位 dcb.Parity=NOPARITY; //无奇偶校验位 dcb.StopBits=1; //TWOSTOPBITS两个停止位 !!!!!!!!!!!!!!! SetCommState(hCom,&dcb); PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR);//清除串口句柄的输入输出缓冲区 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void Cserial_comm_win_1Dlg::OnBnClickedButton1(){//“发送”按钮 // TODO: 在此添加控件通知处理程序代码 CString command; GetDlgItemText(IDC_EDIT1,command); char lpOutBuffer[100]; memset(lpOutBuffer,0,100); int strLength= command.GetLength() + 1; strncpy(lpOutBuffer,command,strLength); DWORD dwBytesWrite=100; COMSTAT ComStat; DWORD dwErrorFlags; BOOL bWriteStat; ClearCommError(hCom,&dwErrorFlags,&ComStat); bWriteStat=WriteFile(hCom,lpOutBuffer,dwBytesWrite,& dwBytesWrite,NULL); if(!bWriteStat){ AfxMessageBox(_T("写串口失败!")); } } void Cserial_comm_win_1Dlg::OnBnClickedButton2(){//“接收”按钮 // TODO: 在此添加控件通知处理程序代码 char str_s[100]; memset(str_s,'',100); DWORD wCount=100;//读取的字节数 BOOL bReadStat; bReadStat=ReadFile(hCom,str_s,wCount,&wCount,NULL); if(!bReadStat) AfxMessageBox(_T("读串口失败!")); PurgeComm(hCom, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); CString str; str=str_s; SetDlgItemText(IDC_EDIT1,str); UpdateData(FALSE); }
解决方案
没有人回答么。。。
secureCRT是如何把串口输入输出缓冲区的内容“实时”映射到界面文本框的?
真是想不通啊!!~~~~~
我发送任何命令,输出缓冲区都读不到任何内容,这是怎么回事啊
解决方案二:
你需要登陆的话,需要实现ssh功能,才能发送用户名,密码等信息。
解决方案三:
你确认secureCRT,同样的波特率等设置,同样的串口设置能出现login么,如果它的能,按道理你也是能的
时间: 2024-10-31 17:15:40