/// 应用程序的主入口点。
/// </summary>
[DllImport("omrvfapi.dll",EntryPoint="OMR_StartReadPaper")]
public static extern void OMR_StartReadPaper(int mode);[DllImport("omrvfapi.dll",EntryPoint="OMR_GetReadResult",CharSet=CharSet.Ansi)]
public static extern int OMR_GetReadResult();[DllImport("omrvfapi.dll",EntryPoint="OMR_GetResultString",CharSet=CharSet.Ansi)]
public static extern int OMR_GetResultString( ref StringBuilder result1);[DllImport("omrvfapi.dll",EntryPoint="OMR_GetLastError",CharSet=CharSet.Ansi)]
public static extern int OMR_GetLastError();
private void button7_Click(object sender, System.EventArgs e)
{ OMR_StartReadPaper(0);                  //开始走纸 bool flag;
int result;
flag = true; StringBuilder resultStr = new StringBuilder(4096);   while(flag)
{
result = OMR_GetReadResult();             //返回阅读结果状态 if(result==1)                             //阅读成功 
{
try
{
                                     MessageBox.Show("这边可以显示!下面的不能显示,直接程序自动退出了");         //问题就在这边,各位帮看看吧
int len ;
len = OMR_GetResultString(ref resultStr);  //返回机器识别到的字符串长度,resultStr为机器识别到得字符串        
MessageBox.Show(resultStr.ToString());               //显示识别结果
this.richTextBox1.Text= resultStr.ToString();
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

else                                           //识别异常情况
{
int err;
string ls_error;
ls_error=""; err=OMR_GetLastError();
switch (err)
{
case 10: 
ls_error="等待串口超时!";break;
case 11:
ls_error="信息卡跟张!";break;

}

MessageBox.Show(ls_error);

}
}
}

解决方案 »

  1.   

    单步跟踪
    len = OMR_GetResultString(ref resultStr);  //返回机器识别到的字符串长度,resultStr为机器识别到得字符串  
    看能不能执行到这一步,F10慢慢调,缩小范围先
      

  2.   

    单步好像不好操作。我在这一句len = OMR_GetResultString(ref resultStr);  下面加了显示len的语句,但是没有显示
    MessageBox.Show(len.ToString());不知道是不是引用传递定义的不对。
    用值传递,可以显示,只不过显示的都是我初始化时赋得值
      

  3.   

    [DllImport("omrvfapi.dll",EntryPoint="OMR_GetResultString",CharSet=CharSet.Ansi)] 
    public static extern int OMR_GetResultString( ref StringBuilder result1); 
    len = OMR_GetResultString(ref resultStr);  //返回机器识别到的字符串长度,resultStr为机器识别到得字符串   
    我把这2个ref去掉就可以了。多谢了。
      

  4.   

    ...不看接口你自己加的ref关键字啊..