在vs2010的program.cs文件下面出现集合已修改,可能无法执行枚举操作,请问是什么原因呢?

qq_39258463 2019-01-31 07:57:52
...全文
324 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39258463 2019-02-25
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
看看 Form1.cs 文件
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{

double temp0, temp1, temp2, temp3, temp4, temp5;
int i = 0;

for (i = 1; i < serialPort1.BytesToRead; i++)
{
//byte[] b = new byte[1000];
// reC = Convert.ToByte(serialPort1.Read(b, 1, serialPort1.BytesToRead));
reC = Convert.ToByte(serialPort1.ReadByte());

if (((int)reC == 221) && (rflag == 0))
{
rflag = 1;
rcount = 1;
}
if ((rflag == 1) && (rcount < 9))
{
reInt[rcount - 1] = (int)reC;
rcount = rcount + 1;
}
if (rcount == 9)
{
rflag = 0;
rcount = 0;
// 计算角速度
TLAngle = reInt[1] + reInt[3] * 256 + reInt[2] * 256 * 256;
if ((reInt[2] & 128) == 128)
{
long x = 0xFF000000;
int y = (int)x;
TLAngle = TLAngle | y;
}
TTLFlag = reInt[7] >> 7 & 1;
LocaFlag = reInt[7] >> 6 & 1;
if (LocaFlag == 1)
LocaCount = LocaCount + 1;

if (LocaCount > 1)
{
if (Convert.ToSingle(dataGridView1[4, DrawR - 1].Value) < 9)
{
LocaFlag = 0;
LocaCount = LocaCount - 1;
}
}
if ((LocaCount == 1) && (locSt == 0) && (LocaFlag == 1))
{
if (XX > 1)
{
System.Timers.Timer timer1 = new System.Timers.Timer();
timer1.Elapsed += new ElapsedEventHandler(timer1_Tick);
UpCount_old = all_Num;
Theta_st = Math.Atan(Convert.ToSingle(dataGridView1[5, DrawR - 2].Value) / Convert.ToSingle(dataGridView1[4, DrawR - 2].Value));
DrawGrid_st = DrawR - 1;
dataGridView1[4, DrawR - 1].Value = '0'; // XX
dataGridView1[5, DrawR - 1].Value = '0'; // YY
XX = '0'; // 避免画出预行进距离
YY = '0';
//timer1.Interval = 4;
// timer1.Enabled = false;
timer1.Enabled = true;
pre_route_flag = 1;
locSt = 1;
}
else
{
LocaFlag = 0; // 避免预跑过程中,出现其它位置传感器
LocaCount = LocaCount - 1;
}
}
if ((LocaCount > 1) && ((all_Num - UpCount_old) > 1000) && (locSt == 1))
{
timer1.Enabled = false;
DrawGrid_ed = DrawR - 1;
//dataGridView1[6,DrawR - 1].Value = "第二个位置传感器";
Theta_ed = Math.Atan(Convert.ToSingle(dataGridView1[5, DrawR - 1].Value) / Convert.ToSingle(dataGridView1[4, DrawR - 1].Value));
locSt = 2;
//button3_Click(this,e);
//break;
}
reInt[7] = reInt[7] & 0x3F;
TLTime_orig = reInt[4] + reInt[5] * 256 + reInt[6] * 256 * 256 + reInt[7] * 256 * 256 * 256;
all_Num = all_Num + 1;
Inst_TLAngle = TLAngle / Convert.ToSingle(118245);
if ((TTLFlag == 1) && (UpCount == 0))
{
dataGridView1[2, 0].Value = Convert.ToString(Inst_TLAngle); //陀螺值
UpCount = UpCount + 1;
if ((TLTime_orig - TLTime_orig_old) > 200)
TLTime_orig = TLTime_orig_old + 27;
TTL_Time_st = TLTime_orig;
}
if ((TTLFlag == 0) && (UpCount > 0))
{
avg_TLAngle = avg_TLAngle + Inst_TLAngle;
UpCount = UpCount + 1;
}
if ((TTLFlag == 1) && (UpCount > 0))
{
if ((TLTime_orig - TLTime_orig_old) > 200)
TLTime_orig = TLTime_orig_old + 27;
TTL_Time_ed = TLTime_orig;

if ((TTL_Time_ed > TTL_Time_st))
{
//int index = this.dataGridView1.Rows.Add();
//dataGridView1[0,DrawR].Value = DrawR+1; // 序号
//Thread invokethread = new Thread(new ThreadStart(StartMethod));
//invokethread.IsBackground = true;
//invokethread.Start();
//var act = new Action(StartMethod);
//act.BeginInvoke(ar => act.EndInvoke(ar), null);
DrawR = this.dataGridView1.Rows.Add();

dataGridView1[6, DrawR].Value = DateTime.Now.ToString();

dataGridView1[0, DrawR].Value = Convert.ToString(DrawR + 1);//序号

//DataGridViewRow newrow = dataGridView1.Rows[index];
//DrawR = index;
//newrow.Cells[0].Value = dataGridView1.RowCount;
Timedis = TTL_Time_ed - TTL_Time_st;
//dataGridView1[1,DrawR-1].Value = Timedis;// 时间间隔
dataGridView1[1, DrawR].Value = Convert.ToString(Timedis);// 时间间隔

avg_TLAngle = (avg_TLAngle + Inst_TLAngle) / (UpCount);
//dataGridView1[2, DrawR].Value = avg_TLAngle; //陀螺值
dataGridView1[2, DrawR].Value = Convert.ToString(avg_TLAngle); //陀螺值



temp2 = Convert.ToSingle(dataGridView1[1, DrawR - 1].Value); // 时间间隔
temp1 = Convert.ToSingle(dataGridView1[2, DrawR - 1].Value); // 陀螺值


temp3 = Convert.ToSingle(dataGridView1[3, DrawR - 1].Value); //角度
temp4 = Convert.ToSingle(dataGridView1[4, DrawR - 1].Value); // XX
temp5 = Convert.ToSingle(dataGridView1[5, DrawR - 1].Value); // YY

temp0 = temp3 + (temp1 - earth_eagle) * temp2 / 7.8 / 1000;//////////////////////////////注意double与float类型
dataGridView1[3, DrawR].Value = Convert.ToString(temp0); // 角度

XX = temp4 + car_plus * Math.Cos(temp0 * 3.1415926 / 180 - Theta_st);
dataGridView1[4, DrawR].Value = Convert.ToString(XX); // XX

YY = temp5 + car_plus * Math.Sin(temp0 * 3.1415926 / 180 - Theta_st);
dataGridView1[5, DrawR].Value = Convert.ToString(YY); ; // YY
TTL_Time_st = TTL_Time_ed;
avg_TLAngle = 0;

//DrawR = this.dataGridView1.Rows.Add();
//DrawR = DrawR+1;

UpCount = 1;
}
}
if (all_Num == 1)

TLTime_orig_old = TLTime_orig;

if (all_Num > 1)
{
if ((TLTime_orig - TLTime_orig_old) > 200)
{
TLTime_orig_old = TLTime_orig + 27;
}
else

TLTime_orig_old = TLTime_orig;

}
}

}
}
xuzuning 2019-02-02
  • 打赏
  • 举报
回复
看看 Form1.cs 文件
LvBao_117 2019-02-02
  • 打赏
  • 举报
回复
引用 3 楼 qq_39258463 的回复:
[quote=引用 2 楼 LvBao_117 的回复:]
你上面一句Form Form1=new Form();
说明Form1是一个对象,而不是一个类型了,下面一句用new Form1貌似不对吧
Form Form1=new Form();这一句是我自己随便加的,加了和去掉都会出现这个错误,program.cs这个文件好像是自动生成的啊[/quote]检查下项目中有没有窗体Form1,有的话删了,重新添加一个;干脆没有这个窗体,肯定要出错
qq_39258463 2019-02-02
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
form1的构造函数打开看下,有问题
比如在foreach 循环里面直接删除集合的元素了
我这个里面完全没有用到foreach循环啊
qq_39258463 2019-02-01
  • 打赏
  • 举报
回复
引用 2 楼 LvBao_117 的回复:
你上面一句Form Form1=new Form();
说明Form1是一个对象,而不是一个类型了,下面一句用new Form1貌似不对吧
Form Form1=new Form();这一句是我自己随便加的,加了和去掉都会出现这个错误,program.cs这个文件好像是自动生成的啊
LvBao_117 2019-01-31
  • 打赏
  • 举报
回复
你上面一句Form Form1=new Form();
说明Form1是一个对象,而不是一个类型了,下面一句用new Form1貌似不对吧
threenewbee 2019-01-31
  • 打赏
  • 举报
回复
form1的构造函数打开看下,有问题 比如在foreach 循环里面直接删除集合的元素了

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧