第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

System.IO.Ports.dll 錯(cuò)誤中的 System.TimeoutException

System.IO.Ports.dll 錯(cuò)誤中的 System.TimeoutException

C#
喵喵時(shí)光機(jī) 2023-09-24 16:11:29
我編寫了一個(gè)設(shè)置參數(shù)的控制臺(tái) C# 程序(我從項(xiàng)目->調(diào)試選項(xiàng)中給出了參數(shù)),我試圖從以太網(wǎng)和串行端口獲取數(shù)據(jù)。我成功設(shè)置了 args 參數(shù),但程序在控制臺(tái)突然打開時(shí)出現(xiàn)超時(shí)錯(cuò)誤,并且就像處于無(wú)限循環(huán)中一樣,但沒(méi)有循環(huán)。(在讀取 while 之前發(fā)生錯(cuò)誤)string filename = args[4];對(duì)于那些想了解這些參數(shù)是什么的人;1 = IP,[2] = 端口號(hào),[3] = 端口名稱(COM3),[4] = 文件名。[編輯] 考慮到我可能同時(shí)從以太網(wǎng)和串行端口的兩個(gè)連接獲取數(shù)據(jù),超時(shí)是為了防止數(shù)據(jù)丟失。另外我想說(shuō)的是,添加DataReceived += new SerialDataReceivedEventHandler(ProcessReceivedData);i 而不是 while 沒(méi)有任何好處,因?yàn)樗俅伟l(fā)生在 while 循環(huán)之前。有人有什么主意嗎?static int Main(string[] args)        {            int err = 0;            if (args.Length == 5)            {                IPAddress IP = IPAddress.Parse(args[1]);                int CmdPort;                if (int.TryParse(args[2],out CmdPort))                {                    string filename = args[4];//takes filename                     String root = @".\\"; //DEFAULT EXE PATH ROOT                    string path_combined;                    path_combined = Path.Combine(root, filename);                    StreamWriter sw;                    try                    {                        sw = File.AppendText(path_combined);                        p = new SPWrapper(IP, CmdPort, args[3], sw);                        if (p.Init())                        {                            while (!Console.KeyAvailable)                            {                                p.GetMessage();                                Thread.Sleep(100);                            }                            p.Close();                        }                        sw.Flush();                        sw.Close();                    }                    catch (System.IndexOutOfRangeException ex)                    {                        System.ArgumentException argEx = new System.ArgumentException("File creation failed!", ex);                        err = -2;                        throw argEx;                    }                }
查看完整描述

2 回答

?
繁星coding

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊

經(jīng)過(guò)評(píng)論里和你的討論,我想我可以回答你的問(wèn)題了。

正如您自己發(fā)現(xiàn)的那樣,該錯(cuò)誤絕對(duì)與您懷疑的那行沒(méi)有任何關(guān)系。

您會(huì)收到一個(gè)TimeoutException有意義的消息,因?yàn)?code>InitilizeSerialPort您將讀取超時(shí)設(shè)置為 10 毫秒。這是非常短的,特別是考慮到您正在讀取整行,而不僅僅是幾個(gè)字節(jié)。
你確實(shí)在那里使用了更大的數(shù)字。默認(rèn)值為 500 毫秒,這是一個(gè)相當(dāng)不錯(cuò)的時(shí)間。如果您確實(shí)需要降低,請(qǐng)嘗試一下,但在大多數(shù)情況下您不需要更改它。由于您正在閱讀一整行,因此實(shí)際上 500 毫秒很可能還不夠,具體取決于您每行獲得的信息量。嘗試一些值,直到它起作用(但如果 90 就足夠了,請(qǐng)不要將其設(shè)置為 100,而是給它一點(diǎn)空間)。

也許值得一提的是,超時(shí)當(dāng)然是最大值。如果指定 1000ms,并且讀取需要 100ms,它將在 100ms 后返回,而不等待超時(shí)。要解決此問(wèn)題,您可以完全刪除設(shè)置 -property 的行ReadTimeout(它將使用默認(rèn)值 500ms)或自行將其設(shè)置為更高的值。

遺憾的是,我無(wú)法幫助您UnauthorizedAccessException解決上一條評(píng)論中提到的問(wèn)題,因?yàn)檫@很大程度上取決于您的設(shè)置。如果您需要幫助,您應(yīng)該提出一個(gè)新問(wèn)題。

編輯:
順便說(shuō)一句,你正在TimeoutException完全吞下GetMessage. 不要那樣做。當(dāng)另一個(gè)錯(cuò)誤發(fā)生時(shí),您已經(jīng)在編寫控制臺(tái)消息,因此也可以在那里執(zhí)行此操作。同樣的方法也適用于SocketException剛剛吞下的東西。永遠(yuǎn)不要吞下異常。


查看完整回答
反對(duì) 回復(fù) 2023-09-24
?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

您是否檢查過(guò)以確保args[1]、args[2]等是您認(rèn)為的那樣?嘗試將 更改args[1]args[0]并將其余部分減少 1?args[2]->args[1]等。



查看完整回答
反對(duì) 回復(fù) 2023-09-24
  • 2 回答
  • 0 關(guān)注
  • 184 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)