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,'\0',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); 
}


图片说明
目前的界面很简单,我想通过文本框获取命令输入,返回的字符串简单地在文本框呈现。不知这想法是否可行,请大神指点一二

3个回答

没有人回答么。。。
secureCRT是如何把串口输入输出缓冲区的内容“实时”映射到界面文本框的?
真是想不通啊!!~~~~~
我发送任何命令,输出缓冲区都读不到任何内容,这是怎么回事啊

你需要登陆的话,需要实现ssh功能,才能发送用户名,密码等信息。

你确认secureCRT,同样的波特率等设置,同样的串口设置能出现login么,如果它的能,按道理你也是能的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问