#c# #.net #cosmos
#c# #.net #cosmos
Вопрос:
Я попытался загрузить cosmos OS на свой реальный компьютер, а не на виртуальный компьютер. Я использовал USB и ISO, но была ошибка, что «Контроллер PS / 2 не поддерживается». Я не создавал ISO при отладке.
исходный код
using System;
using System.Collections.Generic;
using System.Text;
using Sys = Cosmos.System;
namespace CosmosKernel2
{
public class Kernel : Sys.Kernel
{
uint x;
uint y;
Sys.MouseState ms;
bool menuopened;
Canvas can;
protected override void BeforeRun()
{
can = FullScreenCanvas.GetFullScreenCanvas();
can.Clear(System.Drawing.Color.White);
Sys.MouseManager.ScreenHeight = Convert.ToUInt32(can.Mode.Rows);
Sys.MouseManager.ScreenWidth = Convert.ToUInt32(can.Mode.Columns);
Sys.MouseManager.X = 0;
Sys.MouseManager.Y = 0;
menuopened = false;
ms = Sys.MouseState.None;
}
protected override void Run()
{
if ((ms == Sys.MouseState.None) amp;amp; (Sys.MouseManager.MouseState == Sys.MouseState.Left))
{
uint xx = Sys.MouseManager.X;
uint yy = Sys.MouseManager.Y;
if ((xx < 100) amp;amp; (yy > (can.Mode.Rows - 40)))
{
if (menuopened)
{
menuopened = false;
}
else
{
menuopened = true;
}
}
}
Point[] pn = { new Point(Convert.ToInt32(Sys.MouseManager.X), Convert.ToInt32(Sys.MouseManager.Y)), new Point(Convert.ToInt32(Sys.MouseManager.X), Convert.ToInt32(Sys.MouseManager.Y 30)), new Point(Convert.ToInt32(Sys.MouseManager.X 7), Convert.ToInt32(Sys.MouseManager.Y 12)), new Point(Convert.ToInt32(Sys.MouseManager.X 21), Convert.ToInt32(Sys.MouseManager.Y 15)) };
if (Sys.MouseManager.MouseState == Sys.MouseState.None)
{
can.DrawPolygon(new Pen(System.Drawing.Color.Blue, 4), pn);
}
else
{
can.DrawPolygon(new Pen(System.Drawing.Color.Red, 4), pn);
}
if ((x != Sys.MouseManager.X) || (y != Sys.MouseManager.Y))
{
can.Clear(System.Drawing.Color.White);
if (menuopened)
{
can.DrawFilledRectangle(new Pen(System.Drawing.Color.Black), 0, can.Mode.Rows - 40, 100, 300);
}
can.DrawFilledRectangle(new Pen(System.Drawing.Color.Magenta), 0, can.Mode.Rows - 40, 100, 40);
Point[] p = { new Point(Convert.ToInt32(Sys.MouseManager.X), Convert.ToInt32(Sys.MouseManager.Y)), new Point(Convert.ToInt32(Sys.MouseManager.X), Convert.ToInt32(Sys.MouseManager.Y 30)), new Point(Convert.ToInt32(Sys.MouseManager.X 7), Convert.ToInt32(Sys.MouseManager.Y 12)), new Point(Convert.ToInt32(Sys.MouseManager.X 21), Convert.ToInt32(Sys.MouseManager.Y 15)) };
Point[] po = { new Point(Convert.ToInt32(x), Convert.ToInt32(y)), new Point(Convert.ToInt32(x), Convert.ToInt32(y 30)), new Point(Convert.ToInt32(x 7), Convert.ToInt32(y 12)), new Point(Convert.ToInt32(x 21), Convert.ToInt32(y 15)) };
if (Sys.MouseManager.MouseState == Sys.MouseState.None)
{
can.DrawPolygon(new Pen(System.Drawing.Color.Blue, 4), p);
}
else
{
can.DrawPolygon(new Pen(System.Drawing.Color.Red, 4), p);
}
}
x = Sys.MouseManager.X;
y = Sys.MouseManager.Y;
ms = Sys.MouseManager.MouseState;
}
}
}
Кроме того, в virtualbox нет ошибки, и она не работает должным образом.
Что мне делать?
Прошу прощения за мой плохой английский. Я кореец.
Ответ №1:
Порт PS / 2 представляет собой 6-контактный разъем mini-DIN, используемый для подключения клавиатур и мышей к компьютерной системе, совместимой с ПК. Есть ли у вас порт PS / 2 на вашем ПК и совместим ли он с Cosmos OS. проверьте, войдя в консоль или последовательный порт, в чем проблема. Проверьте, не произошел ли сбой байта 250 (0xFA / Success) на порту клавиатуры PS / 2, если это так, сброс может работать некорректно. Попробуйте вручную вызвать команду SendDeviceCommand с шестнадцатеричным сбросом в ps2controller.cs
if (!SendDeviceCommand(DeviceCommand.IdentifyDevice, xSecondPort))
{
return null;
}
Вы также можете попробовать добавить
if (xTestByte == 0x00 || xTestByte == 0x50)
{
return true;
}
Лучшее, что вы можете сделать, это попробовать установить последнюю стабильную версию Cosmos OS и попытаться загрузить ее на свое оборудование после экспорта. Если возможно, попробуйте загрузиться с компакт-диска.